Автор: Gira: Дата: 05.02.2009
Поделитесь у каво есть, магазин за тгц
Автор: Gira: Дата: 05.02.2009
И по идее надо код сменить 1307:400000 примерно на ... *Я* *ХЗ*
Автор: Sanasol: Дата: 05.02.2009
Проще сделай магаз за поинты. Cashshop........
prontera,155,211,5[tab]cashshop[tab]CashShop[tab]86,607:1,7227:1
Автор: Gira: Дата: 05.02.2009
такое есть=/ мне б за тгц=)
//|-----------------------------------------------------------------------------|//
//|[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[ Настя ]^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;
}
//===Прежде чем редактировать координаты посмотрите список дубликатов в конце скрипта===//
prontera,136,161,6 script Настя 608,{
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) Настя#1 941
//morocc,166,106,4 duplicate(custom_cash) Настя#2 811
//geffen,111,64,4 duplicate(custom_cash) Настя#3 811
//payon,168,229,4 duplicate(custom_cash) Настя#4 811
//alberta,114,62,4 duplicate(custom_cash) Настя#5 811
//izlude,134,95,4 duplicate(custom_cash) ИмяНПС#6 811
//aldebaran,133,120,4 duplicate(custom_cash) Настя#7 811
//xmas,140,136,4 duplicate(custom_cash) Настя#8 811
//yuno,150,189,4 duplicate(custom_cash) Настя#9 811
//amatsu,201,86,4 duplicate(custom_cash) Настя#10 811
//gonryun,165,121,4 duplicate(custom_cash) Настя#11 811
//einbroch,70,205,4 duplicate(custom_cash) Настя#12 811
//hugel,93,155,4 duplicate(custom_cash) Настя#13 811
//rachel,136,119,4 duplicate(custom_cash) Настя#14 811
//comodo,203,152,4 duplicate(custom_cash) Настя#15 811
Автор: Gira: Дата: 05.02.2009
как обычный магазин ток не за зени а за тгц
Автор: DiS[IP]: Дата: 05.02.2009
Вариантов реализации этой идеи есть 2..Первая и самая простая на мой взгляд,это введение внутреигровой валюты(поинтов)..Ну и разумеется по мимо поинтов нужно добавить шоп..Ну или можешь покопать в сторону Treasure-Hunters там суть почти такая же.
Автор: Gira: Дата: 05.02.2009
с волютой врядле получица,так как незнаю как ето зделать (вмоба запихнуть поинты)
а охотников за сокровищами нету=)
Автор: Cole McCormick: Дата: 05.03.2009
делай попринципу квестовых нпц, менюшка ассортимента, при нажатии на нужную вещь в новом окошке скажут сколько нужно тцг(его ид в делитоме указывать и количестве у нужной шмотке, также на проверку наличия.. тоесть все что надо и максимально удобно) даж картинку шмотки можно в окошко поставить.
Автор: Gira: Дата: 05.03.2009
спс Уже нашол