Jump to content

Глобальный эвент


Recommended Posts


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  153
  • Reputation:   14
  • Joined:  07/07/12
  • Last Seen:  

Написал глобальный эвент, но возникла одна проблема, топ-3 рейтинг чаров сдавших лут не отображает правильно, т.е не так как надо. Подскажите в чём мой косяк?

- script gxdcxs -1,{
OnInit:
if($ge!=0){end;}
set $leaderchar$,0;
set $leaderloot,0;
set $leaderchar2$,0;
set $leaderloot2,0;
set $leaderchar3$,0;
set $leaderloot3,0;
set $ge,1;
end;
}

- script begin -1,{
//OnDay<month><day>:
OnDay0705:
set $leaderchar$,0;
set $leaderloot,0;
set $leaderchar2$,0;
set $leaderloot2,0;
set $leaderchar3$,0;
set $leaderloot3,0;
set $ge,1;
announce "Глобальный эвент начался. Подробности у NPC в пронтере!",0;
end;
OnDay0712:
set $ge,0;
set $np,1;
announce "Глобальный эвент окончен. Победитель: "+$leaderchar$+", поздравляем его!! Приз у NPC.",0;
end;
}

prontera,162,194,3 script Глобальный эвент 709,{
// 1097,7005,7449, 662
if($ge!=1){
mes "Для тебя у меня сейчас нет задания.";
close;}
set .item,7449;
mes "[Глобальный эвент]";
if(loot2>$leaderloot){
set $leaderloot,loot2;
set $leaderchar$,strcharinfo(0);}
if($np==1){
if($leaderchar$==strcharinfo(0)){
if(select("Получить приз:Отмена")==2){close;}
mes "Держи свой приз.";
getitem 20197,1;
getitem 7227,3;
set $leaderchar$,0;
set $leaderloot,0;
set $np,0;
close;
}close;}
set loot,countitem(.item);
mes "Лидер дня: "+$leaderchar$+". Он сдал - "+$leaderloot+"x "+getitemname(.item)+".";
mes "------------------------";
switch(select("Топ-3","Сдать лут","Ваша Статистика","Задание","Последний срок")){
case 1:
if(loot2>$leaderloot){
set $leaderloot3, $leaderloot2;
set $leaderloot2, $leaderloot;
set $leaderloot,loot2;
set $leaderchar3$, $leaderchar2$;
set $leaderchar2$, $leaderchar$;
set $leaderchar$,strcharinfo(0);
}
if(loot2>$leaderloot2){
set $leaderloot3, $leaderloot2;
set $leaderloot, $leaderloot;
set $leaderloot2,loot2;
set $leaderchar3$, $leaderchar2$;
set $leaderchar$, $leaderchar$;
set $leaderchar2$,strcharinfo(0);
}
if(loot2>$leaderloot3){
set $leaderloot2, $leaderloot2;
set $leaderloot, $leaderloot;
set $leaderloot3,loot2;
set $leaderchar2$, $leaderchar2$;
set $leaderchar$, $leaderchar$;
set $leaderchar3$,strcharinfo(0);
}
mes "Место - ник - кол-во";
mes "1. "+$leaderchar$+" "+$leaderloot+"";
mes "2. "+$leaderchar2$+" "+$leaderloot2+"";
mes "3. "+$leaderchar3$+" "+$leaderloot3+"";
close;
case 2:
if(loot<1){mes "У тебя нет необходимого лута!";close;}
delitem .item,loot;
set loot2,loot2+loot;
close;
case 3:
mes "Вы уже сдали всего "+loot2+" лута.";
close;
case 4:
mes "Вам необходимо сдавать следующий лут: "+getitemname(.item)+". Игрок, сдавший наибольшее кол-во лута (лидер) - побеждает.";
close;
case 5:
mes "Последний срок сдачи лута - 11 июля. Не опоздайте!";
close;
}
}

Edited by mrboob
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.00
  • Content Count:  407
  • Reputation:   159
  • Joined:  11/18/11
  • Last Seen:  

К чему такое количество глобальных переменных? Почему бы тебе не использовать массивы? Всё это можно скомпоновать в одного НИПа.

case 3:
mes "Вы уже сдали всего "+loot2+" лута.";
close;
case 4:
mes "Вам необходимо сдавать следующий лут: "+getitemname(.item)+". Игрок, сдавший наибольшее кол-во лута (лидер) - побеждает.";
close;
case 5:
mes "Последний срок сдачи лута - 11 июля. Не опоздайте!";
close;

А где break; ?

set $leaderchar$,strcharinfo(0);
set $leaderchar2$,strcharinfo(0);
set $leaderchar3$,strcharinfo(0);

Все места занимает один игрок? оО

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  153
  • Reputation:   14
  • Joined:  07/07/12
  • Last Seen:  

Мне подсказали методом переноса сделать позиции, но не фурычит всё равно... Изначально было так:

if(loot2>$leaderloot){
set $leaderloot,loot2;
set $leaderchar$,strcharinfo(0);
}
if(loot2>$leaderloot2){
set $leaderloot2,loot2;
set $leaderchar2$,strcharinfo(0);
}
if(loot2>$leaderloot3){
set $leaderloot3,loot2;
set $leaderchar3$,strcharinfo(0);
}

Edited by mrboob
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.00
  • Content Count:  407
  • Reputation:   159
  • Joined:  11/18/11
  • Last Seen:  

И кто тебе такое подсказал... Я бы в твоём случае скрипт переписал, используя массив, и не обязательно глобальный.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  153
  • Reputation:   14
  • Joined:  07/07/12
  • Last Seen:  

И кто тебе такое подсказал... Я бы в твоём случае скрипт переписал, используя массив, и не обязательно глобальный.

С массивами я особо не дружу, лучше подскажи как без них решить мою проблему, а то я уже много чего перепробывал, а толку никакого либо показывает всех чаров на 3 местах, либо на 2 или показывает вроде бы нормально сначала, но до тех пор пока кто нибудь не тыкнет и не сдаст лут и всё собьется и хрен знает в каком порядке встанет.

Edited by mrboob
Link to comment
Share on other sites

  • 5 years later...

  • Group:  Members
  • Topic Count:  15
  • Topics Per Day:  0.00
  • Content Count:  43
  • Reputation:   0
  • Joined:  10/23/15
  • Last Seen:  

А что надо в этом скрипте переделать чтобы отображалось просто общее чисто сданных предметов?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...