Перейти к содержанию

Рекомендуемые сообщения

помогите пожалуйста со скриптом, имею старенький скрипт написанный под еА, оо-очень хочется опробовать его для геркулеса...юзаю геркулес 2015 написанный под libconfig 1.4.9

вот сам скрипт

 

Скрытый текст

 

- script    PCLoginEvent    -1{  
if(getgmlevel() > 0 && getgmlevel() < 20) goto CheckPayment;
end;

CheckPayment:
if(getgmlevel() == 10 && #PayDaySPrem <= 0) {
set #PayDaySPrem,0;
callfunc "DisablePayment";
} else if(getgmlevel() == 1 && #PayDayPrem <= 0) {
set #PayDayPrem,0;
callfunc "DisablePayment";
}
if(getgmlevel() == 1) {
announce "Ваш статус: Платный. | Осталось дней: "+#PayDayPrem,3;
} else if(getgmlevel() == 10) {
announce "Ваш статус: Платный. | Осталось дней: "+#PayDaySPrem,3;
} else {
announce "Ваш статус: Бесплатный. | Оплата аккаунта у [Premium Maker]`a",3;
}
end;
}

function script DisablePayment {
query_sql "SELECT account_id FROM `char` WHERE name='"+strcharinfo(0)+"'", @premium_acc_id$;
query_sql "UPDATE `login` SET level=0 WHERE account_id='"+@premium_acc_id$[0]+"'";
atcommand strcharinfo(0)+":@reloadgmdb";
return;
}
//===== Конец Функциональной части ===========================  
//============================================================  

//============================================================  
//===== Вычитание дней оплаты ================================  
- script    PaymentControl    -1,{  
end;

OnClock0000:
query_sql "UPDATE `global_reg_value` SET value=value - 1 WHERE str='#PayDayPrem'";  
query_sql "UPDATE `global_reg_value` SET value=value - 1 WHERE str='#PayDaySPrem'";  
end;  
}  
//===== Конец системы вычитания ==============================  
//============================================================  

prontera.gat,136,171,6    script    Premium Maker    862,{  
set @PricePrem, 3000000;  
set @PriceSP, 5000000;  
if(getgmlevel() > 10) goto CannotPay;  
if(getgmlevel() == 1 && #PayDayPrem > 0) goto Prem_Menu2;  
if(getgmlevel() > 1 && #PayDaySPrem > 0) goto SPrem_menu2;  
mes "[Premium Maker]";  
mes "Здравствуйте, я могу сделать вас ^0000FFПремиумом^000000.";  
next;  
mes "[Premium Maker]";  
mes "Вы хотите стать ^0000FFПлатным^000000 игроком?";  
next;  
menu "Стать ^0000FFПремиумом^000000",MakePrem,"Стать ^0000FFСупер Премиумом^000000",MakeSuperPrem,"Нет, спасибо",-;  
close;  

MakePrem:  
mes "[Premium Maker]";  
mes "Итак, вы решили стать ^0000FFПремиумом^000000. Стоимость данной услуги ^FF0000"+@PricePrem+" зен за 1 период^000000, 1 период = 30 дням.";  
next;  

MenuMakePrem:  
menu "Я согласен",Yes_MakePrem,"Можно поподробнее",Wht_Prem,"Нет, спасибо.",-;  
close;  

Wht_Prem:  
mes "[Premium Maker]";  
mes "^0000FFПремиуму^000000 доступны бонусы, не доступные обычным игрокам.";  
next;  
goto MenuMakePrem;  

Yes_MakePrem:  
mes "[Premium Maker]";  
mes "Пожалуйста, введите число периодов, на которое вы хотите оплатить премиум.";  
input @PremMonth;  
next;  
if(@PremMonth < 1) set @PremMonth, 1;  
if(@PremMonth > 12) set @PremMonth, 12;  
set @NeededZeny, @PricePrem*@PremMonth;  
mes "[Premium Maker]";  
mes "Выбрано периодов: ^008080"+@PremMonth+"^000000";  
mes "Необходимо зенег: ^FF0000"+@NeededZeny+"^000000";  
next;  
mes "[Premium Maker]";  
mes "Вы согласны?";  
menu "Да",-,"Нет",CancelMake;  

if (Zeny < @NeededZeny) goto MaloZeneg;  
set Zeny,zeny-@NeededZeny;  
set #PayDayPrem, 30*@PremMonth;  
query_sql "SELECT account_id FROM `char` WHERE name='"+strcharinfo(0)+"'", @just_acc_id$;  
query_sql "UPDATE `login` SET level=1 WHERE account_id='"+@just_acc_id$[0]+"'";  
atcommand strcharinfo(0)+":@reloadgmdb";  
mes "[Premium Maker]";  
mes "Поздравляю вас, вы оплатили ^0000FFПремиум^000000. Оплачено дней: ^FF8040"+#PayDayPrem+"^000000";  
close;  

MakeSuperPrem:  
mes "[Premium Maker]";  
mes "Итак, вы решили стать ^0000FFСупер Премиумом^000000. Стоимость данной услуги ^FF0000"+@PriceSP+" зен за 1 период^000000, 1 период = 30 дням.";  
next;  

MenuMakeSuperPrem:  
menu "Я согласен",Yes_MakeSuperPrem,"Можно поподробнее",Wht_SuperPrem,"Нет, спасибо.",-;  
close;  

Wht_SuperPrem:  
mes "[Premium Maker]";  
mes "^0000FFСупер премиумам^000000 становятся доступны все команды, доступные премиумам, а так же несколько новых команд. Появляется доступ к НПЦ, не доступным больше никому, кроме СП, а у НПЦ, даступных только премиумам у СП появляются скидки.";  
next;  
goto MenuMakeSuperPrem;  

Yes_MakeSuperPrem:  
mes "[Premium Maker]";  
mes "Пожалуйста, введите число периодов, на которое вы хотите оплатить премиум.";  
input @SPMonth;  
next;  
if(@SPMonth < 1) set @SPMonth, 1;  
if(@SPMonth > 12) set @SPMonth, 12;  
set @NeededZeny, @PriceSP*@SPMonth;  
mes "[Premium Maker]";  
mes "Выбрано периодов: ^008080"+@SPMonth+"^000000";  
mes "Необходимо зенег: ^FF0000"+@NeededZeny+"^000000";  
next;  
mes "[Premium Maker]";  
mes "Вы согласны?";  
menu "Да",-,"Нет",CancelMake;  

if (Zeny < @NeededZeny) goto MaloZeneg;  
set Zeny,zeny-@NeededZeny;  
if(#PayDaySPrem <= 0) set #PayDaySPrem,0;  
set #PayDaySPrem, 30*@SPMonth;  
query_sql "SELECT account_id FROM `char` WHERE name='"+strcharinfo(0)+"'", @just_acc_id$;  
query_sql "UPDATE `login` SET level=10 WHERE account_id='"+@just_acc_id$[0]+"'";  
atcommand strcharinfo(0)+":@reloadgmdb";  
mes "[Premium Maker]";  
mes "Поздравляю вас, вы оплатили ^0000FFCупер Премиумом^000000. Оплачено дней: ^FF8040"+#PayDaySPrem+"^000000";  
close;  

Prem_Menu2:  
mes "[Premium Maker]";  
mes "Добрый день ^800000"+strcharinfo(0)+"^000000. Что вы желаете сделать?";  
next;  
menu "Продлить ^0000FFПремиум^000000",Add_Prem,"Стать ^0000FFСупер Премиумом^000000",MakeSuperPrem,"Остаток периода",Status,"Ничего",-;  
close;  

Add_Prem:  
mes "[Premium Maker]";  
mes "Введите число периодов, на которое вы хотите продлить ^0000FFПремиум^000000.";  
input @AddPrem;  
next;  
if(@AddPrem < 1) set @AddPrem, 1;  
if(@AddPrem > 12) set @AddPrem, 12;  
set @NeededZeny, @PricePrem*@AddPrem;  
mes "[Premium Maker]";  
mes "Выбрано периодов: ^008080"+@AddPrem+"^000000";  
mes "Необходимо зенег: ^FF0000"+@NeededZeny+"^000000";  
next;  
mes "[Premium Maker]";  
mes "Вы согласны?";  
menu "Да",-,"Нет",CancelMake;  

if (Zeny < @NeededZeny) goto MaloZeneg;  
set Zeny,zeny-@NeededZeny;  
if(#PayDayPrem < 0) set #PayDayPrem,0;  
set #PayDayPrem, #PayDayPrem+(30*@AddPrem);  
mes "[Premium Maker]";  
mes "^0000FFПремиум^000000 продлён. Оплачено дней: ^FF8040"+#PayDayPrem+"^000000";  
close;  

SPrem_menu2:  
mes "[Premium Maker]";  
mes "Добрый день ^800000"+strcharinfo(0)+"^000000. Что вы желаете сделать?";  
next;  
menu "Продлить СП",Add_SPrem,"Остаток периода",Status,"Ничего",-;  
close;  

Add_SPrem:  
mes "[Premium Maker]";  
mes "Введите число периодов, на которое вы хотите продлить Премиум.";  
input @AddSPrem;  
next;  
if(@AddSPrem < 1) set @AddSPrem, 1;  
if(@AddSPrem > 12) set @AddSPrem, 12;  
set @NeededZeny, @PriceSP*@AddSPrem;  
mes "[Premium Maker]";  
mes "Выбрано периодов: ^008080"+@AddSPrem+"^000000";  
mes "Необходимо зенег: ^FF0000"+@NeededZeny+"^000000";  
next;  
mes "[Premium Maker]";  
mes "Вы согласны?";  
menu "Да",-,"Нет",CancelMake;  

if (Zeny < @NeededZeny) goto MaloZeneg;  
set Zeny,zeny-@NeededZeny;  
if(#PayDaySPrem < 0) set #PayDaySPrem,0;  
set #PayDaySPrem, #PayDaySPrem+(30*@AddSPrem);  
mes "[Premium Maker]";  
mes "^0000FFСупер Премиум^000000 продлён. Оплачено дней: ^FF8040"+#PayDaySPrem+"^000000";  
close;  

Status:  
mes "[Premium Maker]";  
if(getgmlevel() > 1) {  
mes "Ваш статус: ^0000FFСупер Премиум^000000";  
mes "Дней до окончания оплаты: ^FF8000"+#PayDaySPrem+"^000000";  
} else {  
mes "Ваш статус: ^0000FFПремиум^000000";  
mes "Дней до окончания оплаты: ^FF8000"+#PayDayPrem+"^000000";  
}  
close;  

ConvertToSP:  
set @Convetr, @PricePrem+(@PriceSP/2);  
mes "[Premium Maker]";  
mes "Итак, Вы хотите преобразовать себя из премиума в СП. Эта услуга стоит: "+@Convetr+" зен.";  
next;  
mes "[Premium Maker]";  
mes "Продолжить конвертауию?";  
next;  
menu "Да, продолжим.",ContConvert,"Нет, спасибо.",-;  
goto SPrem_menu2;  

ContConvert:  
mes "[Premium Maker]";  
mes "Введите число периодов оплаты СП.";  
input @ConvToSPrem;  
next;  
if(@ConvToSPrem < 1) set @Convetr, 1;  
if(@ConvToSPrem > 12) set @Convetr, 12;  
set @NeededZeny, @Convetr*@ConvToSPrem;  
mes "[Premium Maker]";  
mes "Выбрано периодов: ^008080"+@ConvToSPrem+"^000000";  
mes "Необходимо зенег: ^FF0000"+@NeededZeny+"^000000";  
next;  
mes "[Premium Maker]";  
mes "Вы согласны?";  
menu "Да",-,"Нет",CancelMake;  

if (Zeny < @NeededZeny) goto MaloZeneg;  
set Zeny,zeny-@NeededZeny;  
set #PayDaySPrem, #PayDayPrem+(30*@ConvToSPrem);  
set #PayDayPrem,0;  
mes "[Premium Maker]";  
mes "Теперь вы ^0000FFСупер Премиум^000000. Оплачено дней: ^FF8040"+#PayDaySPrem+"^000000";  
close;  

MaloZeneg:  
mes "[Premium Maker]";  
mes "Я сделаю вас ^0000FFПремиумом/СП^000000 только тогда, когда вы принесёте мне нужную сумму!";  
close;  

CancelMake:  
mes "[Premium Maker]";  
mes "Хорошо, приходите ко мне когда мои услуги станут вам нужны.";  
close;  

CannotPay:  
mes "[Premium Maker]";  
mes "МММ... на вас установлен статус Хелпера... к сожалению я не могу оплатить вам аккаунт.";  
close;  
}

 

 

очень хорошая и продуманная система с хорошей проверкой...

 

ещё имею 1 скрипт как раз работает на геркулесе 2015, но совместить оба не получается, я хотел из 2х скриптов собрать в 1 нормальный, помогите кому не трудно

prontera,146,166,6    script    Premium Account    4_M_PHILMAN,{
// Settings: -----------------------------
set .@Cost, 350; // Cash Points required
set .@Time, 4 * 7 * 24 * 60 * 60; // Time in Seconds = 4 weeks, 7 days per week, 24 hours per day, 60 minutes per day, 60 seconds per minute. = 1 month in this sample. in this sample.
set .@Time$, "1 month";
// ---------------------------------------

mes "[Premium Account]";
mes "I am the Premium Account seller.";
if( #PremiumUser > gettimetick(2) )
mes "Your Premium Account expires in ^FF0000" + callfunc("Time2Str",#PremiumUser) + "^000000.";
mes "What can I do for you?";
next;

// isPremium() returns 1 if the current user account is premium and it have not expired.
// It works together with #Premium_Tick, which is a account Var set with a Unix Time value, representing when the premium account expires.
// isPremium() is the same as #Premium_Tick > gettimetick(2)

switch( select("Pay for Premium Time:About Premium Account") )
{
case 1:
mes "[Premium Account]";
if( #PremiumUser > gettimetick(2) )
mes "Do you really want to extend your Premium Time?";
else
mes "You do really want to convert your account to premium?";

mes "Premium Time is ^FF0000" + .@Time$ + "^000000";
mes "Value is ^FF0000" + .@Cost + "^000000 Cash Points.";
next;
if( select("Yes:No") == 2 )
{
mes "[Premium Account]";
mes "Come back if you change your mind.";
close;
}

if( #CASHPOINTS < .@Cost )
{
mes "[Premium Account]";
mes "You don't have enough Cash Points.";
close;
}

if( #PremiumUser > gettimetick(2) )
set #PremiumUser, #PremiumUser + .@Time; // Time Extension
else
set #PremiumUser, gettimetick(2) + .@Time; // New premium Account
query_sql "UPDATE `login` SET group_id = '1' WHERE account_id = "+getcharid(3)+"";
set #CASHPOINTS, #CASHPOINTS - .@Cost;
mes "[Premium Account]";
mes "Congratulations!!..";
mes "Remember your Premium Account expires in ^FF0000" + callfunc("Time2Str",#PremiumUser) + "^000000.";
next; 
mes "To change the status to take effect, please reenter the game.";
close;
case 2:

// Edit this messages to explain your Users about the premium account in your server.
// ----------------------------------------------------------------------------------

mes "[Premium Account]";
mes "With Premium Account you can:";
mes "Use the commands: @mobsearch,";
mes "@cast,@exp,@petrename,@where,";
mes "@changeleader, @packetfilter,";
mes "@autorefresh and other...";
mes "   ";
close;
}


OnPCLoginEvent:
if( #PremiumUser > gettimetick(2)) {
// sc_start SC_ITEMBOOST,( #PremiumUser - gettimetick(2) ),50;
// sc_start SC_EXPBOOST,( #PremiumUser - gettimetick(2) ),50;
dispbottom "Remember your Premium Account expires in " + callfunc("Time2Str",#PremiumUser) + "";
}
if( #PremiumUser <= gettimetick(2) ) {
dispbottom "Time of Premium Account was ended or you don't pay for this.";
query_sql "UPDATE `login` SET group_id = '0' WHERE account_id = "+getcharid(3)+"";
}
end;
}

Изменено пользователем ucell-uz
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика