ucell-uz Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 (изменено) помогите пожалуйста со скриптом, имею старенький скрипт написанный под еА, оо-очень хочется опробовать его для геркулеса...юзаю геркулес 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; } Изменено 24 марта, 2017 пользователем ucell-uz Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения