Пробуй это: //|-----------------------------------------------------------------------------|// //|[Release] Points System |// //|-----------------------------------------------------------------------------|// //|Скрипт был создан для FatalRO |// //|-----------------------------------------------------------------------------|// //|Cкрипт написал DeathHoll |// //|-----------------------------------------------------------------------------|// //|Последняя проверка скрипта была на eAthena SQL 13200 stable |// //|-----------------------------------------------------------------------------|// //|Description: Скрипт основан на примере Магазина Кафры |// //|-----------------------------------------------------------------------------|// //|Версия скрипта на данный момент 1.7 |// //|1.0- Первая версия скрипта |// //|1.1- Добавлена конфигурация нпс |// //|1.2- Добавлена система удаления/добавления предметов из поинт шопа |// //|1.3- Добавил ГМ Меню и функцию установки очков персонажу |// //|1.4- Добавил в ГМ Меню функцию удаления всех поинтов с сервера |// //|1.5- Добавил дубликатов и изменил систему установки очков |// //|1.6- Исправил все мелкие баги |// //|1.7- Финальная версия скрипта...но в дальнейшем будет полностью оптимизирован|// //|-----------------------------------------------------------------------------|// - shop F_Cash 139,501:50 //Не изменять тут ничего!!!! //|=====================================================================|// //| Конфигурация скрипта |// //|=====================================================================|// - script cashshop_conf -1,{ end; OnInit: set $@cpoint$, "Cash point"; //Указываем ваш сайт где рассказано о донате и т.п set $@maxpoint, 20000; // Максимальное кол-во очков которое может быть у персонажа set $@gmlvl, 99; // Минимальный уровень ГМ'а для управления поинтами set $@npc$,"^000080[ Cash ]^000000"; // Устанавливаем Имя НПС set $@maxInv,100; // Максимальное кол-во предметов которые может купить персонаж set $@kickall,0; //Кикает всех персонажей после удаления всех поинтов с сервера //|=====================================================================|// //| Конец конфигурации скрипта |// //|=====================================================================|// npcshopdelitem "F_Cash",501; // Не изменять тут ничего!!!! if (getarraysize($cash_item) >= 1) { npcshopitem "F_Cash",$cash_item[0],$cash_price[0]; for (set .@i,1; .@i < getarraysize($cash_item); set .@i,.@i+1) { npcshopadditem "F_Cash",$cash_item[.@i],$cash_price[.@i]; } } end; } //===Прежде чем редактировать координаты посмотрите список дубликатов в конце скрипта===// moc_prydb1,39,121,5 script Cash 853,{ if(getgmlevel() == $@gmlvl) goto L_GM; L_start: mes $@npc$; mes "Добро пожаловать в Point Shop!"; mes "Сейчас у вас:"; mes "[ ^0000FF"+#cashpoint+"^000000 ] ^FF0000"+$@cpoint$+" Очков^000000"; next; switch(select("-Купить предметы в Point Shop:-Информация:-Уйти")) { case 1: close2; callshop "F_Cash",1; dispbottom "У вас "+#cashpoint+" "+$@cpoint$+" Очков."; end; case 2: mes $@npc$; mes "На нашем серве стоит система ^FF0000"+$@cpoint$+" Очков^000000"; close; case 3: close; } L_GM: mes $@npc$; mes "Здраствуйте Администратор ^0000FF"+strcharinfo(0)+"^000000"; mes "Что желаете?"; next; switch(select("-Посмотреть список вещей в магазине:-Управление очками:-Изменить поинт шоп:-Нормальное меню")) { case 1: close2; callshop "F_Cash",1; dispbottom "У вас сейчас "+#cashpoint+" "+$@cpoint$+" Очков."; end; case 2: mes $@npc$; mes "Что желаете?"; next; switch(select("-Дать игроку очки:-Удалить все поинты с игроков")) { case 1: mes $@npc$; mes "Вы хотите игроку дать поинты?"; next; if(select("-Нет:-Да")==2) goto L_adddonate; goto L_canc; L_adddonate: mes $@npc$; mes "Введите имя игрока."; mes "Введите ^FF00000^000000 для отмены"; next; input .@dname$; if(.@dname$ == "0") goto L_canc; if(!isloggedin(getcharid(3,.@dname$)) ) { mes $@npc$; mes "Игрок [ ^0000FF"+.@dname$+"^000000 ] сейчас в оффлайне."; mes "Хотите продолжить?"; next; if(select("-Нет:-Да")==1) close; goto L_donating; } L_donating: mes $@npc$; mes "Сколько ^FF0000"+$@cpoint$+" Очков^000000 вы хотите дать персонажу?"; mes "Введите ^FF00000^000000 для отмены"; next; input .@cpoint; if(.@cpoint == 0) goto L_canc; else if(.@cpoint > $@maxpoint) { mes $@npc$; mes "Максимальное кол-во ^FF0000"+$@cpoint$+"^000000 очков не должно быть больше ^FF0000"+$@maxpoint+"^000000."; close; } mes $@npc$; mes "Имя: ^FF0000"+.@dname$+"^000000"; mes "Кол-во очков которые будут у персонажа: ^FF0000"+.@cpoint+"^000000"; next; if(select("-Отмена:-^FF0000Подтвердить^000000")==2) { if (!isloggedin(getcharid(3,.@dname$)) ) { goto L_confirmdonate2; } goto L_confirmdonate; } close; L_confirmdonate: if(!isloggedin(getcharid(3,.@dname$)) ) { mes $@npc$; mes "Процесс не удался так как ^0000FF"+@donatorname$+"^000000 в оффлайне."; close; } mes $@npc$; mes "^338C60Идет процесс отправки очков..^000000."; mes " Дать [ ^0000FF"+.@cpoint+"^000000 ] ^FF0000"+$@cpoint$+" Очков^000000 игроку"; mes "[ ^0000FF"+.@dname$+"^000000 ]"; close2; if(!isloggedin(getcharid(3,.@dname$)) ) { announce "Oперация не удалась.",bc_self,0x08F8C6; dispbottom "Игрока нет в онлайне."; end; } announce "Операция удалась.",bc_self,0x08F8C6; dispbottom "[ "+.@cpoint+" ] "+$@cpoint$+" Очков получил [ "+.@dname$+" ]"; set @RID, getcharid(3,.@dname$); attachrid(@RID); set #cashpoint,#cashpoint+.@cpoint; dispbottom "Вы получили "+#cashpoint+" "+$@cpoint$+" очков."; detachrid; end; L_confirmdonate2: if (isloggedin(getcharid(3,.@dname$)) ) { announce "Операция удалась.",bc_self,0x08F8C6; dispbottom "[ "+.@cpoint+" ] "+$@cpoint$+" Очков получил [ "+.@dname$+" ]"; set @RID, getcharid(3,.@dname$); attachrid(@RID); set #cashpoint,#cashpoint+.@cpoint; dispbottom "Вы получили "+#cashpoint+" "+$@cpoint$+" Очков."; detachrid; end; } if (getarraysize($dnames$) == 128 ) { deletearray $dnames$[0],1; deletearray $dpoints[0],1; } set $dnames$[getarraysize($dnames$)],.@dname$; set $dpoints[getarraysize($dpoints)],.@cpoint; mes $@npc$; mes "[ ^0000FF"+.@cpoint+"^000000 ] ^FF0000"+$@cpoint$+" Очков^000000 игроку"; mes "[ ^0000FF"+.@dname$+"^000000 ]"; close; case 2: mes $@npc$; mes "Вы уверены что хотите удалить все"; mes ""+$@cpoint$+" Очки с вашего сервера?"; next; if(select("-Нет:-Да")==1) goto L_canc; mes $@npc$; mes "Все "+$@cpoint$+" Очки были удалены с сервера."; set $clearpoints,$clearpoints+1; close2; switch ($@kickall) { default: end; case 1: if($@clearannounce) { announce "Все игроки будут кикнуты из игры через 10 секунд.",bc_all; sleep 1000; atcommand "@kickall"; end; } atcommand "@kickall"; end; case 2: detachrid; for ( set .@i,2000000; .@i <= 2010000; set .@i, .@i + 1 ) { if ( .@i % 250 == 0 ) sleep 20; if ( !attachrid(.@i) ) continue; set #cashpoint,0; set clearpoints,$clearpoints; } if($@clearannounce) announce "Все "+$@cpoint$+" Очки были удалены с сервера Администратором.",bc_all; } end; } case 3: mes $@npc$; mes "Что желаете?"; next; switch(select("Добавить Предметы:Удалить предмет:Удалить все предметы из магазина:Ничего")) { case 1: mes $@npc$; mes "Пожалуйста введите ^0000FFitem id^000000 предмета который хотите добавить.";; mes "Введите ^FF00000^000000 для отмены"; next; input .@item; if(.@item == 0) goto L_canc; mes $@npc$; mes "Предмет: ^FF0000"+getitemname(.@item)+"^000000"; mes "Теперь введите цену за которую можно будет его купить"; mes "Введите ^FF00000^000000 для отмены"; next; input .@price; if(.@price ==0) goto L_canc; mes $@npc$; mes "Предмет: ^FF0000"+getitemname(.@item)+"^000000"; mes "Цена: ^FF0000"+.@price+"^000000"; mes "Все так?"; next; if(select("-Отмена:-Подтвердить")==1) goto L_canc; set $cash_item[getarraysize($cash_item)],.@item; set $cash_price[getarraysize($cash_price)],.@price; npcshopadditem "F_Cash",.@item,.@price; mes $@npc$; mes "^FF0000"+getitemname(.@item)+"^000000 добавлен в поинт шоп."; close; case 2: mes $@npc$; mes "Пожалуйста введите айди предмета который хотите удалить."; mes "Введите ^FF00000^000000 для отмены"; next; input .@remitem; if(.@remitem == 0) goto L_canc; mes $@npc$; mes "Предмет: ^FF0000"+getitemname(.@remitem)+"^000000"; mes "Хотите удалить его из магазина?"; next; if(select("-Нет:-Да")==1) goto L_canc; for (set @i,0; @i < getarraysize($cash_item); set @i,@i+1) { if ($cash_item[@i] == .@remitem) { deletearray $cash_item[@i],1; deletearray $cash_price[@i],1; npcshopdelitem "F_Cash",.@remitem; mes $@npc$; mes "^FF0000"+getitemname(.@remitem)+"^000000 удален из магазина."; close; } else { mes $@npc$; mes "^FF0000"+getitemname(.@remitem)+"^000000 не найден в списке товаров поинт шопа."; close; } } case 3: mes $@npc$; mes "Вы уверены что хотите удалить все предметы из магазина?"; next; if(select("-Нет:-Да")==1) goto L_canc; deletearray $cash_item[0],127; deletearray $cash_price[0],127; npcshopitem "F_Cash",501,1; npcshopdelitem "F_Cash",501; mes $@npc$; mes "Все предметы были удалены из магазина."; close; case 4: goto L_GM; end; L_canc: mes $@npc$; mes "Действие отменено."; close; } case 4: goto L_start; } //==Покупка предмета в магазине==// OnBuyItem: getinventorylist; if(@inventorylist_count >= $@maxInv){ dispbottom "Вы привысили максимальное кол-во покупок."; end; } for (set .@i,0; .@i < getarraysize(@bought_nameid); set .@i,.@i+1) { if (@bought_quantity[@i] <= 0) { end; } set @cost,callfunc("F_CashPrice",@bought_nameid[.@i]); if ((@cost*@bought_quantity[.@i]) > #cashpoint) { dispbottom "У вас не хватает "+$@cpoint$+" Очков."; } else if (!checkweight(@bought_nameid[.@i],@bought_quantity[.@i])) { dispbottom "Процесс покупки недоступен так как у вас перевес в инвентаре."; } else { set #cashpoint,#cashpoint-@cost*@bought_quantity[.@i]; getitem @bought_nameid[.@i],@bought_quantity[.@i]; dispbottom "Cпасибо за покупку!"; dispbottom "Теперь у вас "+#cashpoint+" "+$@cpoint$+" Очков."; } } deletearray @bought_nameid[0],getarraysize(@bought_nameid); deletearray @bought_quantity[0],getarraysize(@bought_quantity); end; //===Ничего тут не изменяем===// OnInit: npcshopattach "F_Cash",1; end; OnPCLoginEvent: if(clearpoints != $clearpoints) { set #cashpoint,0; set clearpoints,$clearpoints; } for ( set .@i,0; .@i < getarraysize($dnames$); set .@i,.@i + 1) { if ( $dnames$[.@i] != strcharinfo(0) ) continue; set #cashpoint,#cashpoint + $dpoints[.@i]; deletearray $dnames$[.@i],1; deletearray $dpoints[.@i],1; dispbottom "У вас "+#cashpoint+" "+$@cpoint$+" очков."; } end; } function script F_CashPrice { for (set .@i,0; .@i < getarraysize($cash_item); set .@i,.@i+1) { if ($cash_item[.@i] == getarg(0)) { return $cash_price[.@i]; } } return; } //Дубликаты //prontera,141,171,4 duplicate(custom_cash) Cash#1 941