Назад

Поделитесь=)

Автор: Gira: Дата: 05.02.2009

Поделитесь у каво есть, магазин за тгц

Автор: Gira: Дата: 05.02.2009

И по идее надо код сменить 1307:400000 примерно на ... *Я* *ХЗ*


а как с этих 400к зделать хоть 1 тгц=)

Автор: 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

спс Уже нашол