Сейчас 20:12:04 Четверг, 2 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Функции
Функции
SunCreepДата: Понедельник, 22 Августа 2011, 02:14:12 | Сообщение # 1
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Несколько вопросов по функциям:
1)Если я создаю цикл от 10 до 1 что будет?Он просто пойдёт в обратном порядке?
2)Если цикл от 1 до Х ,а в цикле Х=Х+1 то будет крит?
3)Если я использую случайное число,то бишь Х=случайное число между 1 и Y,где Y кол-во играющих игроков.Так вот,если Y равен 1,то будет случайное число между 1 и 1 значит по любому будет 1?
 

Banzay89Дата: Понедельник, 22 Августа 2011, 02:54:57 | Сообщение # 2
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
SunCreep, цикл не обязательно должен начинаться с 1. если зделать так
Code
local integer i=10
loop
exitwhen i==0
//
//
set i=i-1
endloop

то все будет прекрасно работать. пойми саму суть цикла
2) крит будет только если цикл бесконечный
3) представь себе, да
 

SunCreepДата: Понедельник, 22 Августа 2011, 03:08:43 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Banzay89, нет,как выглядит цикл на jass`е я представляю,но на GuI он сможет сам определить?Или нужно использовать дополнительную пере переменную вместо А?
Quote (Banzay89)
крит будет только если цикл бесконечный

В данном случае бесконечный,стало быть крит.
 

lawsonДата: Понедельник, 22 Августа 2011, 13:42:11 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SunCreep)
2)Если цикл от 1 до Х ,а в цикле Х=Х+1 то будет крит?

Не будет крита просто процессор сам остановит цикл после заполнения памяти.
Будет это выглядить так, сначала игра на секунду остановится(глюк) а потом снова будет все нормально но цикл дальше не будет выполняться.
Добавлено (22 Август 2011, 13:41:01)
---------------------------------------------
Quote (SunCreep)
3)Если я использую случайное число,то бишь Х=случайное число между 1 и Y,где Y кол-во играющих игроков.Так вот,если Y равен 1,то будет случайное число между 1 и 1 значит по любому будет 1?

Хехехе железная логика.

Добавлено (22 Август 2011, 13:42:11)
---------------------------------------------
Quote (SunCreep)
1)Если я создаю цикл от 10 до 1 что будет?Он просто пойдёт в обратном порядке?

нет о не будет в обратном порядке идти если только ты не будешь в цикле уменьшать 10 - 1 -> 1, так как и со вторым вариантом проц его просто остановит.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 22 Августа 2011, 17:04:30
 

SunCreepДата: Понедельник, 22 Августа 2011, 14:13:55 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Quote (lawson)
Хехехе железная логика.

я это спрашивал,т.к. хотел сделать так,чтоб дуэли не проходили между ливнувшими игроками,но это ещё предстоит хорошенько обдумать.
 

lawsonДата: Понедельник, 22 Августа 2011, 14:21:10 | Сообщение # 6
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SunCreep)
чтоб дуэли не проходили между ливнувшими игроками

При выборе рандомом игрока сделай условие что этот игрок находится в игре.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SunCreepДата: Понедельник, 22 Августа 2011, 14:35:16 | Сообщение # 7
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
lawson, у меня есть переменная со всеми героями,я устанавливаю Х как случайное число и двигаю Hero[X]
Разве там можно вставить что-то подобное?
 

lawsonДата: Понедельник, 22 Августа 2011, 14:42:32 | Сообщение # 8
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SunCreep)
и двигаю Hero[X]

Я это имею ввиду проверяй что игрок играет.
Если игрок Hero[X] = играет то
ДВИГАТЬ ЕГО
иначе
установить другое значение для X


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 22 Августа 2011, 14:42:47
 

SunCreepДата: Понедельник, 22 Августа 2011, 14:51:19 | Сообщение # 9
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
lawson, хм,я сделал и получил крит.
Я так понимаю,что если играет один человек,то цикл будет бесконечным,вот смотри:
Я устанавливаю случайные значения,далее сравниваю что бы оба игрока были в игре,но так как я один,это условие ни когда не сработает и постоянно будет идти иначе,а в иначе я поставил перезапустить триггер.
 

lawsonДата: Понедельник, 22 Августа 2011, 14:52:23 | Сообщение # 10
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
SunCreep, Кароче сейчас я тебе сделаю.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SunCreepДата: Понедельник, 22 Августа 2011, 14:56:54 | Сообщение # 11
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
lawson, вот,посмотри:

просто если игрок будет один,то условия ни когда не совпадут,ибо для условий требуется два игрока)

Добавлено (22 Август 2011, 14:56:54)
---------------------------------------------
блин,я же тут всё напутал))

 

lawsonДата: Понедельник, 22 Августа 2011, 14:58:11 | Сообщение # 12
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
SunCreep, Кароче я так понял тебе нужно выделить два рандомных игрока и двигать их юниты в какуето область?

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SunCreepДата: Понедельник, 22 Августа 2011, 14:58:53 | Сообщение # 13
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
именно
 

lawsonДата: Понедельник, 22 Августа 2011, 14:59:26 | Сообщение # 14
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Тебе сначала надо будет сравнить сколько вообще игроков играют. Если игрок только один то вообще не выполнять триггер.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SunCreepДата: Понедельник, 22 Августа 2011, 15:03:07 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Окей,сделал.
 

lawsonДата: Понедельник, 22 Августа 2011, 15:07:49 | Сообщение # 16
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
SunCreep, Ну что работает как надо?

Добавлено (22 Август 2011, 15:07:49)
---------------------------------------------
Я могу тебе сделать только на жасс так как на гуи в цикле нельзя применять юнитов.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SunCreepДата: Понедельник, 22 Августа 2011, 15:12:31 | Сообщение # 17
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
lawson, ну вот посмотри,и скажи будет оно работать,если будет более одного игрока.Отключение я сделал другим триггером.
Code
function Trig_First_____________________u_Func004Func007Func001C takes nothing returns boolean
     if ( not ( udg_X[27] == 2 ) ) then
         return false
     endif
     return true
endfunction

function Trig_First_____________________u_Func004Func007C takes nothing returns boolean
     if ( not ( udg_X[27] == 1 ) ) then
         return false
     endif
     return true
endfunction

function Trig_First_____________________u_Func004C takes nothing returns boolean
     if ( not ( GetPlayerSlotState(GetOwningPlayer(udg_Hero[udg_X[26]])) == PLAYER_SLOT_STATE_PLAYING ) ) then
         return false
     endif
     if ( not ( GetPlayerSlotState(GetOwningPlayer(udg_Hero[udg_X[28]])) == PLAYER_SLOT_STATE_PLAYING ) ) then
         return false
     endif
     return true
endfunction

function Trig_First_____________________u_Actions takes nothing returns nothing
     call DisplayTextToForce( GetPlayersAll(), ( ( udg_Player_Colors[3] + "Íàïîìèíàíèå: " ) + ( udg_Player_Colors[10] + "Äëÿ ïîáåäû íà ïîëå áèòâû äîäæåí îñòàòüñÿ ëèøü îäèí þíèò!" ) ) )
     set udg_X[26] = GetRandomInt(1, 4)
     set udg_X[28] = GetRandomInt(7, 10)
     if ( Trig_First_____________________u_Func004C() ) then
         set udg_X[27] = GetRandomInt(1, 2)
         call DisplayTextToForce( GetPlayersAll(), ( udg_Player_Colors[3] + "Íà÷àëàñü äóýëü ìåæäó:" ) )
         call DisplayTextToForce( GetPlayersAll(), ( udg_Player_Colors[3] + ( ( GetHeroProperName(udg_Hero[udg_X[26]]) + ( "(" + ( udg_Player_Colors[GetConvertedPlayerId(GetOwningPlayer(udg_Hero[udg_X[26]]))] + ( GetPlayerName(GetOwningPlayer(udg_Hero[udg_X[26]])) + ( udg_Player_Colors[3] + ( ") è " + ( GetHeroProperName(udg_Hero[udg_X[28]]) + ( "(" + ( udg_Player_Colors[GetConvertedPlayerId(GetOwningPlayer(udg_Hero[udg_X[28]]))] + ( udg_Player_Colors[3] + ")" ) ) ) ) ) ) ) ) ) ) + "" ) ) )
         set udg_LocaDuel[1] = GetUnitLoc(udg_Hero[udg_X[26]])
         set udg_LocaDuel[2] = GetUnitLoc(udg_Hero[udg_X[28]])
         if ( Trig_First_____________________u_Func004Func007C() ) then
             call SetUnitPositionLoc( udg_Hero[udg_X[26]], GetRectCenter(gg_rct________________020) )
             call SetUnitPositionLoc( udg_Hero[udg_X[28]], GetRectCenter(gg_rct________________021) )
             call EnableTrigger( gg_trg_Money )
         else
             if ( Trig_First_____________________u_Func004Func007Func001C() ) then
                 call SetUnitPositionLoc( udg_Hero[udg_X[26]], GetRectCenter(gg_rct________________024) )
                 call SetUnitPositionLoc( udg_Hero[udg_X[28]], GetRectCenter(gg_rct________________025) )
                 call EnableTrigger( gg_trg_Money_2 )
             else
             endif
         endif
     else
         call ConditionalTriggerExecute( GetTriggeringTrigger() )
     endif
endfunction

//===========================================================================
function InitTrig_First_____________________u takes nothing returns nothing
     set gg_trg_First_____________________u = CreateTrigger(  )
     call DisableTrigger( gg_trg_First_____________________u )
     call TriggerRegisterTimerEventPeriodic( gg_trg_First_____________________u, 10.00 )
     call TriggerAddAction( gg_trg_First_____________________u, function Trig_First_____________________u_Actions )
endfunction
 

lawsonДата: Понедельник, 22 Августа 2011, 15:13:26 | Сообщение # 18
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
SunCreep, нее ты че с ума сошел. Такое читать не возможно. Если я тебе сделаю на жасс ты разберешься, там ни чего сложного не будет. Я все объясню. Делать?

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 22 Августа 2011, 15:13:37
 

SunCreepДата: Понедельник, 22 Августа 2011, 15:15:15 | Сообщение # 19
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
lawson, а я ждал такой реакции))
Нет,не надо.Я,конечно,не думаю,что понять будет сложно,но я лучше проведу тест с кем-нить и проверю будет ли работать мой вариант,т.к. он на GuI и,если что,я смогу его исправить.Если же нет,я напишу тебе))
Спасибо,что помог)
 

Banzay89Дата: Понедельник, 22 Августа 2011, 16:18:13 | Сообщение # 20
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
SunCreep, ой я немного ошибся. крита в цикле не будет lawson правду написал. просто в моём понятии цикл это не только loop, а вообще последовательность действий от начала до конца, так вот я и ошибся немног, сорри. :D
 

SunCreepДата: Понедельник, 22 Августа 2011, 16:24:15 | Сообщение # 21
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Banzay89, ну я просто хотел знать сработает ли это с числами.С юнитами работает))
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Функции
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz