Автор: Kill Spirit: Дата: 05.26.2010
Вопрос:
[COLOR="DarkOrange"]1. Что именно этот запрос к SQL делает?
query_sql "SELECT `char_id` FROM `rus_event` WHERE `account_id` = '"+getcharid(3)+"'",.a;
query_sql "INSERT INTO `rus_event` (`account_id`,`char_id`,`state`) VALUES ('"+getcharid(3)+"','"+getcharid(0)+"','1')";
[/COLOR]Автор: Renegade: Дата: 05.26.2010
1- чтение из базы ID чара
2- запись в базу ID аккаунта, ID чара, местоположение.
3- оператор while
4,5- есть уже готовый написанный ивент "угадай монстра".
Автор: DiS[IP]: Дата: 05.26.2010
[FONT=Lucida Console]1,2:Читаем мануалы по MySQL и радуемся.
а)Выбираем параметр char_id из базы rus_event где параметр account_id равняется "+getcharid(3)+".
б)Insert Into- оператор языка SQL который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.
3)
while (условие) оператор;
[/FONT][LEFT][FONT=Lucida Console]Условие всегда заключено в скобки, оно может быть произвольным выражением. Оператор while повторяет выполнение оператора следующего условия,до тех пор,пока это условие истинно.Если это условие не истинно с самого начала или становится не истинным в процессе выполнения данного опрератора,то управление передается оператору,следующему за опрератором цикла.Если повторяемая часть оператора содержит более одного оператора,то повторяемая группа операторов должна быть заключена в фигурные скобки скобки,например: [/FONT][/LEFT]while(условие)
{
оператор_1;
оператор_2;
....
оператор
}
[/FONT][FONT=Lucida Console] 4)Скриптовая команда 'setnpcdisplay':setnpcdisplay "Имя НПС",1002;
1002 - ID Спрайта.defpattern 1, "([^:]+):.*\\Слово.*","Actions";
[/FONT]
Автор: DiS[IP]: Дата: 05.26.2010
[FONT=Lucida Console]To Renegade:Ни в рот мега познавательно,если точно ответа не знаешь лучше не пиши ничего.Автору так как он новичек нужен развернутый ответ а не обрывки.[/FONT]
Автор: Kill Spirit: Дата: 05.26.2010
Слушай а можешь написать defpatten
Когда игрок говорит в пронте хил то ему дает 100% сп, хп и аги, блес
Автор: DiS[IP]: Дата: 05.26.2010
[FONT=Lucida Console]Держи:
prontera,140,180,5 script Имя НПС Sprite,{
OnInit:
defpattern 1, "([^:]+):.*\\хил.*","Heal";
Heal:
percentheal 100,100;
sc_start SC_BLESSING,300000,10;
sc_start SC_INCREASEAGI,300000,10;
end;
}
[/FONT]
Автор: Kill Spirit: Дата: 05.26.2010
Неработает, Кричу возле нпц Хил, он нереагирует
Автор: DiS[IP]: Дата: 05.26.2010
[FONT=Lucida Console]Писать нужно именно так как написано в скрипте не Хил,а хил.Ну и самое главное..ты перезагрузку скриптов(@reloadscript) делал?[/FONT]
Автор: DiS[IP]: Дата: 05.27.2010
[FONT=Lucida Console]Посты,которые не относятся к теме потер.Спирит,создавай тему в соотвествующем разделе и там ты получишь ответ.Здесь обсуждаются только скрипты,а не двиг розы.[/FONT]
Автор: Kill Spirit: Дата: 06.05.2010
Обьясните мне как работает вот этот эвент:
prontera,150,180,4 script PK-Fight 990,{
if( select("[Регистрация]","[Выйти]") == 2 || $@A2 >=2 || $@Team1$ == strcharinfo(1) || $@Team2$ == strcharinfo(1)
|| getpartyleader(getcharid(1),1) != getcharid(3) ){ close; }
if( $@A2 ){
set $@A,($@A== 1?2:1);
set $@A2,$@A2+1;
}
if( !$@A2 ){
set $@A,rand(1,2);
set $@A2,$@A2+1; }
setd "$@Team"+$@A+"$",strcharinfo(1);
setd "$@Team"+$@A,getcharid(1);
mes "Готово";
close;
OnInit:
set $@NPCNAME$,strnpcinfo(0);
disablenpc $@NPCNAME$;
disablenpc "1";
disablenpc "2";
end;
}
- script PK-Fight_confi -1,{
OnPCKillEvent:
set .@k,1;
OnPCDieEvent:
getmapxy(.@q$,.@qq,.@qqq,0);
set .@T,( strcharinfo(1) == $@Team1$ ? 1 : 2 );
if( .@T && $@C && .@q$ == $@RunMap$ ){
if( .@k ){
setd "$@Tk"+.@T,getd( "$@Tk"+.@T )+1;
}
if( !.@k ){
warp $@mapname$,getd("$@teammapxy"+.@T+"[0]"),getd("$@teammapxy"+.@T+"[1]");
sleep2 1;
atcommand "@alive";
}
}
end;
OnClock0100:
OnClock0400:
OnClock0700:
OnClock1000:
OnClock1300:
OnClock1600:
OnClock1900:
OnClock2200:
OnStarrtt:
announce "[Система]:PK-Fight начнется через 5 минут, просьба зарегестрироватся.",bc_all;
enablenpc $@NPCNAME$;
OnStarrt:
set $@PK_Fight_On,( !$@PK_Fight_On ? 1 : 0 );
set $@Team1$,"";
set $@Team2$,"";
set $@Team1,0;
set $@Team2,0;
set $@Tk1,0;
set $@Tk2,0;
set $@A,0;
set $@C,0;
enablenpc "GM-PK_Fight";
if( $@end ){ set $@end,0; end; }
//=======================================================
sleep $@wait[0];
if( !$@Team1 || !$@Team2 ){
announce "[Система]:PK-Fight закончен.",bc_all;
disablenpc $@NPCNAME$;
disablenpc "1";
disablenpc "2";
set $@end,1;
callsub "OnStarrt";
end;
}
announce "[Система]:PK-Fight начался!",bc_all;
warpparty $@mapname$,$@teammapxy1[0],$@teammapxy1[1],$@Team1;
warpparty $@mapname$,$@teammapxy2[0],$@teammapxy2[1],$@Team2;
//=======================================================
sleep $@wait[1];
mapannounce $@mapname$,"[Система]:PK-Fight начнем пожалуй",bc_map;
set $@C,1;
sleep $@wait[2];
enablenpc "2";
enablenpc "1";
warpparty $@RunMap$,0,0,$@Team1;
warpparty $@RunMap$,0,0,$@Team2;
//=======================================================
sleep $@wait[3];
if( $@Tk1 == $@Tk2 ){
announce "[Система]: Нету побидителей!",bc_all;
set $@end,1;
callsub "OnStarrt";
end;
}
set .Win,( $@Tk1 > $@Tk2 ? 1 : 2 );
announce "[Система]: "+getd("$@Team"+.Win+"$")+" выйграла!",bc_all;
getpartymember getd("$@Team"+.Win),2;
for(; .u
attachrid $@partymemberaid[.u];
set #CASHPOINTS,#CASHPOINTS+40;
warp "SavePoint",0,0;
detachrid;
}
set .Win,(.Win==1?2:1);
getpartymember getd("$@Team"+.Win),2;
for(set .u,0; .u
attachrid $@partymemberaid[.u];
set #CASHPOINTS,#CASHPOINTS+40;
warp "SavePoint",0,0;
detachrid;
}
set $@end,1;
callsub "OnStarrt";
end;
}
pvp_n_1-1,106,130,4 script 1 100,{
if( select("Возвратится","Починить всё","Проверка счета") == 3 ){
announce "[Система]: "+$@Team1$+" очков : "+$@Tk1+" , "+$@Team2$+" очков : "+$@Tk2,bc_self;
close;
}
if( @menu == 2 ){
atcommand "@repairall";
close;
}
warp $@RunMap$,0,0;
close;
OnInit:
set $@RunMap$,"pvp_n_1-2"; //game map name
setarray $@wait[0],300000,10000,20000,1800000;
getmapxy($@mapname$,.i,.ii,1,strnpcinfo(0));
setd "$@teammapxy"+strnpcinfo(0)+"[0]",.i;
setd "$@teammapxy"+strnpcinfo(0)+"[1]",.ii;
setwall $@mapname$,103,123,10,6,0,"wall3";
setwall $@mapname$,.103,75,10,6,0,"wall4";
end;
}
pvp_n_1-1,106,69,4 duplicate(1) 2 100
prontera,152,182,4 script GM-PK_Fight 100,{
if( !getgmlevel() ){end;}
disablenpc "GM-PK_Fight";
doevent "PK-Fight_confi::OnStarrtt";
end;
}
prontera,147,169,6 script Прохожий 86,{
if (getgmlevel() >= 70) goto L_gm;
set .@npcName$,"[^0000FF Прохожий ^000000]";
mes .@npcName$;
mes "Какая сегодня хорошая погода";
close;
L_gm:
mes .@npcName$;
mes "Привет" + strcharinfo(0) + ",GM вы хотите чтото сделать?";
mes "Выбирайте!";
menu "Начать Эвент",playy,"Нечего",L_close;
play:
next;
mes "[WOR]";
mes "Ок,начинаем";
close2;
goto L_play;
}
- script WoR#disable -1,{
OnInit:
disablenpc "War of Rune#WoR";
disablenpc "War of Rune#banker";
end;
}
- script WoRannouncer -1,{
L_play:
OnHour2:
pvpoff "guild_vs1";
killmonsterall "guild_vs1";
announce "Wor: Начинается эвент War of rune",0;
sleep2 10000;
announce "WoR: Пожалуйста Зарегистрируйтесь и говорите со мной в Prontera!",0;
sleep2 10000;
announce "WoR: Я закрою регистрацию через 1 минуту. Приз в этот раз составляет 1х TCG Card.",0;
hideonnpc "War of Rune#WoR";
OnMinute1:
announce "WoR: Закрыто. Следующий раунд через 2 часа.",0;
hideoffnpc "War of Rune#WoR";
donpcevent "War of Rune#banker::L_playwor";
end;
}
prontera,147,167,6 script War of Rune#WoR 753,{
mes "[War of Rune]";
mes "Привет!";
mes "Вы хотите зарегестрироватся на эвенте ^FF0000 War of Rune ^000000?";
menu "Да",L_yes,"Нет",L_close,"Информация",L_info;
L_info:
next;
mes "[War of Rune]";
mes "Хорошо, вы попадаете в партию из 10 игроков";
mes "Все, что Вы должны сделать, это убить 2 партию";
mes "Партия которая осталась последней, побеждает.";
mes "Хотели бы вы зарегестрироватся?";
menu "Да",L_yes,"Нет",L_close;
L_yes:
next;
mes "[War of Rune]";
mes "Хорошо. У Вас должна быть пати из 10 игроков.";
mes "Кроме того, удостоверьтесь, что у вас есть другая (вражеская) партия из 10 игроков.";
mes "Только удостоверьтесь, что у вас есть точно 10 игроков.";
mes "У Вас есть партия из 10 игроков?";
menu "Да",L_p10,"Нету",L_close;
L_p10:
getpartymember getcharid(1);
set .@partymembercount, $@partymembercount;
if(.@partymembercount == 10) goto L_p11;
next;
mes "[War of Rune]";
mes "У вас в партии нету 10 игроков";
next;
close;
end;
L_close:
mes "[War of Rune]";
mes "Досвидания!";
next;
close;
end;
L_p11:
mes "[War of Rune]";
mes "Отлично!";
mes "Пройдемте в комнату WoR.";
next;
warpparty "guild_vs1",50,50,getcharid(1);
end;
}
guild_vs1,50,57 script War of Rune#banker 753,{
mes "[War of Rune]";
mapannounce "guild_vs1","WoR: Вы победили. Скажите мне, как называется ваша партия. Только вы или будет ошибка.",0;
mes "Введите имя партии";
input $@partyname;
next;
mes "[War of Rune]";
mes "Отлично";
close2;
hideoffnpc "War of Rune#banker";
mapannounce "guild_vs1","WoR: Чтобы получить свой приз, пожалуйста убейте 1 поринга, если через 1 минуту вы этого не сделаете, то вы приз не получите.",0;
monster guild_vs1,0,0,"Приз",1002,150,"prize::OnMobKilled";
sleep2 10000;
announce "WoR: "+$@partyname+" has won the War of Rune! Congrats!",0;
OnMinute1:
warpparty "prontera",150,150,getcharid(1);
donpcevent "WoRannouncer::L_play";
end;
//playTime
L_playwor:
mapannounce "guild_vs1","WoR: Добро пожаловать!",0;
sleep2 10000;
mapannounce "guild_vs1","WoR: Все просто, вы должны друг друга хорошо отпинать :) .",0;
sleep2 10000;
mapannounce "guild_vs1","WoR: Вы можете пользоватся всем...",0;
sleep2 10000;
mapannounce "guild_vs1","WoR: Тот кто умрет, приз не получит.",0;
sleep2 10000;
mapannounce "guild_vs1","WoR: Окей, окей???",0;
sleep2 10000;
mapannounce "guild_vs1","WoR: Приготовились!!!",0;
sleep2 10000;
mapannounce "guild_vs1","WoR: ДРАКА!!!!!!",0;
pvpon "guild_vs1";
goto L_if;
L_if:
if (getmapusers("guild_vs1") <= 10) goto L_champ;
if (getmapusers("guild_vs1") == 0) goto L_no1;
goto L_if;
end;
L_no1:
announce "WoR: Жаль, но некто не победил.",0;
donpcevent "WoRannouncer::L_play";
end;
L_champ:
hideonnpc "War of Rune#banker";
mapannounce "guild_vs1","WoR: Подойдите пожалуйста и назовите свою партию.",0;
end;
}
- script prize -1,{
OnMobKilled:
warp prontera,150,150;
getitem 7227,1;
end;
}
guild_vs1 mapflag nowarp
guild_vs1 mapflag nowarpto
guild_vs1 mapflag noteleport
guild_vs1 mapflag nosave
guild_vs1 mapflag nomemo
guild_vs1 mapflag nobranch
}
}
}