значит так, суть такая, стоит камешек. Туда подбегает народ, открывает мпенюшку и если хочет вступить в какую-либо команду - вступает.
Сразу даю ЦУ - как ткоа поставили камешек, сразу ставьте себе гм 1 и дабл тык два раза - он станет оранжевым(состояние [Blocked]), значит отключился, затем дабл тык - станет фиолетовым, значит работает.
Одновременно меню с камня может открывать только один игрок, сделанно на всякий случаи.
Как только прошло полчаса - вещи игркоов летят в банк, затем они портаются на позиции по командам, коордианты указанны в дефах, cr_place1 и cr_place2
Код
[DEFNAME cr_colors]
cr_activated 64
cr_activating 110
cr_busy 238
cr_blocked 248
cr_place1 1491 1629 18
cr_place2 1480 1629 18
Если игрок не дождался эти полчаса и логаутился - он автоматом вылетает из списка, освобождая позицию, тоже самое если он умирает во время ожидания начала турнира.
Дальше, прошло полчаса - камень переводистя в состояние [Has started], т.е. турнир начат. Игроки уже стоят на позициях своих команд, НО у них стоит 0 дексы и 0 стамины, т.е. сдвинуться с места они в течении 2ух минут не могут - в это время они должны одеваться и морально готвоится. Сразу замечу - могут возникнуть неприятности со статлоком.
До этого момента вроде все ок тут и одному моно постестить было. Дальшеигроки махаются себе и махаются, при смерте и логауте им возвращается карма и они летят в бриту, ес-сно тут же выбывают из соревнования.
Когда игрок умер или логаутился - автоматически идет проверка, остались ли еще в живых члены его команды, т.е. как только умирает последний игрок комнады - втоаря команда тут же выигрывает, никаких плиток бегать расставлять не нада.
Выигрывшие игроки умирают, возвращаютсвои карму и киллы которые были до турнира, умирают, летят в бриту, там оживают и получают 1к гольда.
Вот именно этот момент, правильно ли определяются попедители я тестил через жопу, и н есовсем в нем уверен. Если кто возьмется тетсить - буду рад.
Ах да, как только победители вылетели в бриту - тут же стоун автоматически включается на новый набор.
вот весь сркипт(+ еще сферху кусок с дефами):
Сам камень:
Код
// cOLOR RACE
[ITEMDEF i_CR_stone]
DEFNAME=i_cr_stone
NAME=CR stone
TYPE=t_script
ID=3798
ON=@dclick
IF (<src.flags>&statf_dead)
RETURN 1
ENDIF
IF (<src.isGM>)
IF (<color> == cr_activated)
RETURn 1
ENDIF
IF (<color> == cr_activating)
color=cr_blocked
name=<tag.name> [Blocked]
timer=-1
FOR m 1 10 //обнуление участников
TRYP 0 uid.<tag.memberG<eval <local.m>>>.tag.joined
TRYP 0 uid.<tag.memberG<eval <local.m>>>.sysmessage @110 [SERVER] You declined to join CR tournament.
TRYP 0 uid.<tag.memberG<eval <local.m>>>.events -e_cr_joined
TRYP 0 tag.memberG<eval <local.m>>
ENDFOR
ELSE
color=cr_activating
name=<tag.name>
timer=30*60
ENDIF
RETURN 1
ENDIF
if (<color> != cr_activated) && (<color> != cr_blocked)
if (<color> == cr_busy)
src.sysmessage @110 [SERVER] CR system is busy, wait please!
RETURN 1
ENDIF
color=cr_busy
name=<tag.name> [busy]
src.tag.cr=<eval <uid>>
src.events +e_cr_monitor
dialog d_activation
RETURN 1
Else
src.sysmessage @110 [SERVER] CR is in progress!
RETURN 1
ENDIF
ON=@timer
IF (0<tag.part2>)
FOR m 1 10 //возвращение дексы и стамины
TRYP 0 uid.<tag.memberG<eval <local.m>>>.dex <uid.<tag.memberG<eval <local.m>>>.tag.olddex>
TRYP 0 uid.<tag.memberG<eval <local.m>>>.stam <uid.<tag.memberG<eval <local.m>>>.dex>
TRYP 0 uid.<tag.memberG<eval <local.m>>>.message @110 CR has started!
ENDFOR
tag.part2=
timer=-1
ELSE
color=cr_activated
name=<tag.name> [Has started]
FOR m 1 10 //кидание и подготовка участников к турниру
TRYP 0 uid.<tag.memberG<eval <local.m>>>.sysmessage @110 [SERVER] CR tournament has begun! You have 2 minutes to prepare
TRYP 0 uid.<tag.memberG<eval <local.m>>>.events -e_cr_joined
TRYP 0 uid.<tag.memberG<eval <local.m>>>.events +e_cr
TRYP 0 uid.<tag.memberG<eval <local.m>>>.tag.olddex <uid.<tag.memberG<eval <local.m>>>.dex>
TRYP 0 uid.<tag.memberG<eval <local.m>>>.dex 0
TRYP 0 uid.<tag.memberG<eval <local.m>>>.stam 0
TRYP 0 uid.<tag.memberG<eval <local.m>>>.all_to_bank
TRYP 0 uid.<tag.memberG<eval <local.m>>>.cr_items <qval (0<uid.<tag.memberG<eval <local.m>>>.tag.joined> < 6) ? 64 : 238 >
TRYP 0 uid.<tag.memberG<eval <local.m>>>.p <qval (0<tag.joined> < 6) ? <def.cr_place1> : <def.cr_place2> >
ENDFOR
timer=2*60
tag.part2=1
ENDIF
ON=@create
color=cr_activating
tag.name=CR stone
timer=30*60