Долго я себе голову ломал , но так и не удалось решить одну проблему.=(
Проблема заключается в том , что когда родитель одновременно заносит два любых значения в список или в очередь или куда-угодно , то заносится всегда только одно число , а второе выбрасывается. Как можно решить эту проблему?
Например:
Код
if UnitSpeed[O]>=100 and global.Phase1=1 //При некоторых условиях... { global.Phase1=0 ds_queue_enqueue(global.turn2,O) //Число или несколько чисел заносится в очередь , но заносится только одно }
Да , но мне нужно остановить набор готовности , чтобы один объект походил , потом начал ходить другой , в случае когда готовность у них одинаковая. В результате один объект (Тот который ходит раньше) обгоняет первый , сначала на 1 пункт , потом на 2 и т.д. Вот такая проблема выходит ,и никак не удается решить=(
Код
if UnitSpeed[O]>=100 { global.Phase1=0 UnitSpeed[O]-=100 ds_queue_enqueue(global.turn2,O) }
Если поставить так , то юнит потеряет скорость , но в список не попадет. Если не поставить UnitSpeed[O]-=100 то юнит попадет в него бесконечное количество раз. Если поставить выше условие попадания , то попадет один , второй , третий , но начнет появляется разрыв в UnitSpeed[O] между ними , который постоянно будет увеличиваться.
Добавлено (08.07.2013, 21:38) --------------------------------------------- вот тут кроется корень зла : if global.Unit[O]=0 and global.Phase1=1 { UnitSpeed[O]+=D } Еще не все юниты со 100 ин. походили , а он уже добавляет инициативу тем , кто еще не походил , а тем кто еще ожидает хода инициативы не получают.
Добавлено (08.07.2013, 22:07) --------------------------------------------- Все я исправил=) Спасибо за помощь! Я сделал так:
Код
if UnitSpeed[O]>=100 { global.Phase1=0 {ds_queue_enqueue(global.turn2,O)}}
if global.Phase1=1 and global.Phase3=0 { UnitSpeed[O]+=D }
if global.Phase1=0 {
}
if O=ds_queue_dequeue(global.turn2) and global.next=1{ global.next=0 global.Unit[O]=1 global.Phase3=1 }
Ctrl:
Код
if global.Unit[O]=1{ global.Phase4=0 global.attack=0 global.Unit[O]=0 global.SunitX=-1 global.SunitY=-1 UnitSpeed[O]-=100 global.Phase3=0 mp_grid_add_rectangle(global.Moving_mpgrid,id.x-30,id.y-30,id.x+30,id.y+30) if ds_queue_size(global.turn2)=0 {alarm[0]=51 global.next=1} if ds_queue_size(global.turn2)>0 {global.next=1} }