Jump to content

Louis T Steinhil

Members
  • Content Count

    170
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Louis T Steinhil

  1. Now I'm convinced that it is something programmed not just simple sprites.
  2. We cannot solve our problems with the same thinking we used when we created them.

  3. well my @afk & @dance plugin runs smoothly on latest revision
  4. I don't know the story, I posted because I wanted to know if someone has the information regarding what happened... if the post was really that annoying admins can delete it.. hehe
  5. what the! This is the first time I saw this post. Just COOL idea. That's all I can say.
  6. I'm not here to judge. I just wanted to share insights about this blog. I don't know much about the hisrtory of ragnarok...but it's definitely a good article for it. Though I don't say that this is something real or fake... Happy Reading everyone! http://adultimum.net/rw/extras.php?section=soappserv
  7. Mysterious: Oops, button will appear when you click on the page; Splash page will auto redirect after 6 seconds if you don't do anything.
  8. Well it's not that much but I hope someone will benefit from this. I know I'm not good at graphics so...take it easy on me. Just sharing some codes. Splash Page Demo: http://project-destro.asurahosting.com/test Description: Splash Page On click: A button will appear "Enter Site" else Auto redirect to website; Interval is 6 seconds. by the way I re-coded this, so some of the codes were from google. splash-screen.rar
  9. try this: (not mine) Index: src/common/mmo.h===================================================================--- src/common/mmo.h (revision 12718)+++ src/common/mmo.h (working copy)@@ -248,7 +248,7 @@ unsigned char karma; short hair,hair_color,clothes_color; int party_id,guild_id,pet_id,hom_id;- int fame;+ int fame,pvprank,aura; short weapon; // enum weapon_type short shield; // view-idIndex: src/map/atcommand.c===================================================================--- src/map/atcommand.c (revision 12718)+++ src/map/atcommand.c (working copy)@@ -8200,6 +8200,43 @@ } /*==========================================+ * Auras personalizadas+ *------------------------------------------*/+int atcommand_aura(const int fd, struct map_session_data* sd, const char* command, const char* message)+{+ struct map_session_data *pl_sd = 0;+ int type = 0;++ if (!message || !*message || sscanf(message, "%d %[^n]", &type, atcmd_player_name) < 2)+ {+ if (!message || !*message || sscanf(message, "%d", &type) < 1)+ {+ clif_displaymessage(fd, "Please, enter at least an option (usage: @aura ).");+ return -1;+ }++ atcmd_player_name[0] = 0;+ pl_sd = sd;+ }++ if( pl_sd != sd )+ {+ if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL)+ return -1;+ }++ sprintf(atcmd_output, "Current Aura: %d", pl_sd->status.aura);+ clif_displaymessage(fd, atcmd_output);++ pl_sd->status.aura = type;+ pc_setglobalreg(pl_sd,"USERAURA",type);++ pc_setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, 3);++ return 0;+}++/*========================================== * AUCTION SYSTEM *------------------------------------------*/ int atcommand_auction(const int fd, struct map_session_data *sd, const char *command, const char *message)@@ -8552,6 +8589,7 @@ { "homshuffle", 60, atcommand_homshuffle }, { "showmobs", 10, atcommand_showmobs }, { "feelreset", 10, atcommand_feelreset },+ { "aura", 1, atcommand_aura }, { "auction", 60, atcommand_auction }, { "mail", 1, atcommand_mail }, { "noks", 0, atcommand_ksprotection },Index: src/map/clif.c===================================================================--- src/map/clif.c (revision 12718)+++ src/map/clif.c (working copy)@@ -95,6 +95,139 @@ int clif_parse (int fd); /*==========================================+ * @aura+ *------------------------------------------*/+static int auraTable[][3] = {+ { -1, -1, -1 },+ // Reserved for PK Mode+ { 586, -1, -1 }, // LH+ { 586, 362, -1 }, // LH Mvp+ { 586, 362, 240 }, // 1є PK Place+ // Basic Auras+ { 418, -1, -1 }, // Red Fury+ { 486, -1, -1 }, // Blue Fury+ { 485, -1, -1 }, // White Fury+ { 239, -1, -1 }, // Aura Red+ { 240, -1, -1 }, // Aura White+ { 241, -1, -1 }, // Aura Yellow+ { 620, -1, -1 }, // Aura Blue+ { 202, -1, -1 }, // Lvl 99 Bubbles+ { 362, -1, -1 }, // Advanced Lvl 99 Bubbles+ { 678, -1, -1 }, // Brazil Aura Bubbles+ { 679, -1, -1 }, // Brazil Aura+ { 680, -1, -1 }, // Brazil Aura Floor+ // 2 Sets+ { 239, 418, -1 },+ { 239, 486, -1 },+ { 239, 485, -1 },+ { 240, 418, -1 },+ { 240, 486, -1 },+ { 240, 485, -1 },+ { 241, 418, -1 },+ { 241, 486, -1 },+ { 241, 485, -1 },+ { 620, 418, -1 },+ { 620, 486, -1 },+ { 620, 485, -1 },+ // Full Sets+ { 239, 418, 202 },+ { 239, 486, 202 },+ { 239, 485, 202 },+ { 240, 418, 202 },+ { 240, 486, 202 },+ { 240, 485, 202 },+ { 241, 418, 202 },+ { 241, 486, 202 },+ { 241, 485, 202 },+ { 620, 418, 202 },+ { 620, 486, 202 },+ { 620, 485, 202 },+ { 239, 418, 362 },+ { 239, 486, 362 },+ { 239, 485, 362 },+ { 240, 418, 362 },+ { 240, 486, 362 },+ { 240, 485, 362 },+ { 241, 418, 362 },+ { 241, 486, 362 },+ { 241, 485, 362 },+ { 620, 418, 362 },+ { 620, 486, 362 },+ { 620, 485, 362 },+ { 239, 418, 678 },+ { 239, 486, 678 },+ { 239, 485, 678 },+ { 240, 418, 678 },+ { 240, 486, 678 },+ { 240, 485, 678 },+ { 241, 418, 678 },+ { 241, 486, 678 },+ { 241, 485, 678 },+ { 620, 418, 678 },+ { 620, 486, 678 },+ { 620, 485, 678 },+ // Oficial Set+ { 680, 679, 678 },+ { -1, -1, -1 }+};++int aura_getSize()+{+ return sizeof(auraTable)/(sizeof(int) * 3) - 1;+}++int aura_getAuraEffect(struct map_session_data *sd, short pos)+{+ int aura = sd->status.aura;++ if (pos < 0 || pos > 2)+ return -1;++ if (aura > aura_getSize() || aura < 0)+ return -1;++ return auraTable[aura][pos];+}++void clif_sendaurastoone(struct map_session_data *sd, struct map_session_data *dsd)+{+ int effect1, effect2, effect3;++ if (pc_ishiding(sd))+ return;++ effect1 = aura_getAuraEffect(sd, 0);+ effect2 = aura_getAuraEffect(sd, 1);+ effect3 = aura_getAuraEffect(sd, 2);++ if (effect1 >= 0)+ clif_specialeffect_single(&sd->bl, effect1, dsd->fd);+ if (effect2 >= 0)+ clif_specialeffect_single(&sd->bl, effect2, dsd->fd);+ if (effect3 >= 0)+ clif_specialeffect_single(&sd->bl, effect3, dsd->fd);+}++void clif_sendauras(struct map_session_data *sd, enum send_target type)+{+ int effect1, effect2, effect3;++ if (pc_ishiding(sd))+ return;++ effect1 = aura_getAuraEffect(sd, 0);+ effect2 = aura_getAuraEffect(sd, 1);+ effect3 = aura_getAuraEffect(sd, 2);++ if (effect1 >= 0)+ clif_specialeffect(&sd->bl, effect1, type);+ if (effect2 >= 0)+ clif_specialeffect(&sd->bl, effect2, type);+ if (effect3 >= 0)+ clif_specialeffect(&sd->bl, effect3, type);+}++/*========================================== * mapЋI‚МipђЭ’и *------------------------------------------*/ int clif_setip(const char* ip)@@ -1016,6 +1149,7 @@ clif_specialeffect(bl,423,AREA); else if(sd->state.size==1) clif_specialeffect(bl,421,AREA);+ clif_sendauras((TBL_PC*)bl, AREA); } break; case BL_MOB:@@ -3388,6 +3522,7 @@ clif_specialeffect_single(bl,423,sd->fd); else if(tsd->state.size==1) clif_specialeffect_single(bl,421,sd->fd);+ clif_sendaurastoone(tsd, sd); } break; case BL_NPC:@@ -3413,6 +3548,37 @@ } } +int clif_insight2(struct block_list *bl,va_list ap)+{+ struct block_list *tbl;+ struct map_session_data *sd, *tsd;+ int flag;++ tbl = va_arg(ap,struct block_list*);+ flag = va_arg(ap,int);++ if (bl == tbl && !flag)+ return 0;++ sd = BL_CAST(BL_PC, bl);+ tsd = BL_CAST(BL_PC, tbl);++ if (sd && sd->fd)+ {+ if (bl == tbl)+ clif_sendaurastoone(sd, tsd);+ else+ clif_getareachar_unit(sd, tbl);+ }++ return 0;+}++void clif_getareachar_char(struct block_list *bl, short flag)+{+ map_foreachinarea(clif_insight2, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE,BL_PC, bl, flag);+}+ //Modifies the type of damage according to status changes [Skotlex] //Aegis data specifies that: 4 endure against single hit sources, 9 against multi-hit. #define clif_calc_delay(type,div,damage,delay) ((delay)==0&&(damage)>0?((div)>1?9:4):type)Index: src/map/clif.h===================================================================--- src/map/clif.h (revision 12718)+++ src/map/clif.h (working copy)@@ -415,6 +415,10 @@ int do_final_clif(void); int do_init_clif(void); +// [@aura]+void clif_sendauras(struct map_session_data *sd, enum send_target type);+void clif_getareachar_char(struct block_list *bl, short flag);+ #ifndef TXT_ONLY // MAIL SYSTEM void clif_Mail_window(int fd, int flag);Index: src/map/pc.c===================================================================--- src/map/pc.c (revision 12718)+++ src/map/pc.c (working copy)@@ -898,6 +898,9 @@ sd->change_level = pc_readglobalreg(sd,"jobchange_level"); sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER"); + // @Aura+ sd->status.aura = pc_readglobalreg(sd,"USERAURA");+ // Cash shop sd->cashPoints = pc_readaccountreg(sd,"#CASHPOINTS"); sd->kafraPoints = pc_readaccountreg(sd,"#KAFRAPOINTS");Index: src/map/status.c===================================================================--- src/map/status.c (revision 12718)+++ src/map/status.c (working copy)@@ -5038,6 +5038,7 @@ vd = status_get_viewdata(bl); calc_flag = StatusChangeFlagTable[type]; if(!(flag&4)) //&4 - Do not parse val settings when loading SCs+ { switch(type) { case SC_DECREASEAGI:@@ -5931,6 +5932,15 @@ return 0; } }+ // @aura+ if (sd && sd->status.aura > 0 &&+ (type == SC_HIDING || type == SC_CLOAKING || type == SC_CHASEWALK))+ {+ sd->status.aura *= -1;+ clif_clearunit_area(&sd->bl, 0);+ clif_getareachar_char(&sd->bl, 0);+ }+ } else //Special considerations when loading SC data. switch( type ) {@@ -6693,6 +6703,14 @@ opt_flag = 0; } + // @auras+ if (sd && sd->status.aura < 0 &&+ (type == SC_HIDING || type == SC_CLOAKING || type == SC_CHASEWALK))+ {+ sd->status.aura *= -1;+ clif_sendauras(sd, AREA_WOS);+ }+ if (calc_flag&SCB_DYE) { //Restore DYE color if (vd && !vd->cloth_color && sce->val4) or http://rathena.org/board/topic/79770-atcommand-aura/
  10. ‘Have you found joy in your life?’ 'Has your life brought joy to others?

  11. Just saw this post, http://rathena.org/board/topic/86360-episode-151-charleston-crisis-instance/#entry219284
  12. 2308 is a mob right? case KO_ZANZOU:if(sd){struct mob_data *md;md = mob_once_spawn_sub(src, src->m, src->x, src->y, iStatus->get_name(src), 2308, "", SZ_SMALL, AI_NONE);if( md ){md->master_id = src->id;md->special_state.ai = AI_ZANZOU;if( md->deletetimer != INVALID_TIMER )iTimer->delete_timer(md->deletetimer, mob_timer_delete);md->deletetimer = iTimer->add_timer (iTimer->gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0);mob_spawn( md );pc->setinvincibletimer(sd,500);// unlock target lockclif->skill_nodamage(src,bl,skill_id,skill_lv,1);skill->blown(src,bl,skill->get_blewcount(skill_id,skill_lv),unit_getdir(bl),0);}}break; Do you know how can I make it a clone of me not just a mob? I mean a clone of the caster? *mob_spawn_clone?
  13. ok thanks for the idea goddameit.
  14. Why use @pk? I thought we have killable: "Make your character killable." why not just make killable an alias? aliases: { killable: ["pk"] mobinfo: ["monsterinfo", "mi"] iteminfo: ["ii"] time: ["date", "serverdate", "servertime"] autotrade: ["at"] help: ["h"] jumpto: ["goto", "warpto"] mount: ["mountpeco"] who: ["whois"] npctalk: ["npctalkc"] gvgon: ["gpvpon"] gvgoff: ["gpvpoff"] jobchange: ["job"] load: ["return"] warp: ["rura", "mapmove"] dye: ["ccolor"] hairstyle: ["hstyle"] haircolor: ["hcolor"] monster: ["spawn"] blvl: ["lvup", "blevel", "baselvl", "baselvup", "baselevel", "baselvlup"] jlvl: ["jlevel", "joblvl", "joblvup", "joblevel", "joblvlup"] glvl: ["glevel", "guildlvl", "guildlvup", "guildlevel", "guildlvlup"] resetstat: ["streset"] resetskill: ["skreset"] allskill: ["allskills", "skillall", "skillsall"] allstats: ["allstat", "statall", "statsall"] ban: ["banish"] unban: ["unbanish"] unjail: ["discharge"] homlevel: ["hlvl", "hlevel", "homlvl", "homlvup"] homevolution: ["homevolve"] mutearea: ["stfu"] monsterignore: ["battleignore"] raise: ["revive"] kill: ["die"] guildstorage: ["gstorage"] accinfo: ["accountinfo"] itemreset: ["clearinventory"] channel: ["main"]}
  15. if( !.@card4 ){ getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 4700 + .@o * 10 + .@r; close; } else if( !.@card3 ){ getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, 4700 + .@o * 10 + .@r, .@card4; close; } else if( !.@card2 ){ getitem2 .@id, 1,1, .@ref, 0, .@card1, 4700 + .@o * 10 + .@r, .@card3, .@card4; close; } else getitem2 .@id, 1,1, .@ref, 0, 4700 + .@o * 10 + .@r, .@card2, .@card3, .@card4; close; else{ delitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, .@card4; specialeffect 155,0; emotion e_an; close; }
  16. Just saw a VIP script in rathena but don't know if this one works with hercules as well CREATE TABLE IF NOT EXISTS `vip_bronze` ( `account_id` int(11) unsigned NOT NULL default '0', `account_name` varchar(255) NOT NULL default 'NULL', `start_date` datetime NOT NULL default '0000-00-00 00:00:00', `end_date` datetime NOT NULL default '0000-00-00 00:00:00', `status` varchar(255) NOT NULL DEFAULT 'NULL', PRIMARY KEY (`account_id`)) ENGINE=MyISAM;CREATE TABLE IF NOT EXISTS `vip_silver` ( `account_id` int(11) unsigned NOT NULL default '0', `account_name` varchar(255) NOT NULL default 'NULL', `start_date` datetime NOT NULL default '0000-00-00 00:00:00', `end_date` datetime NOT NULL default '0000-00-00 00:00:00', `status` varchar(255) NOT NULL DEFAULT 'NULL', PRIMARY KEY (`account_id`)) ENGINE=MyISAM;CREATE TABLE IF NOT EXISTS `vip_gold` ( `account_id` int(11) unsigned NOT NULL default '0', `account_name` varchar(255) NOT NULL default 'NULL', `start_date` datetime NOT NULL default '0000-00-00 00:00:00', `end_date` datetime NOT NULL default '0000-00-00 00:00:00', `status` varchar(255) NOT NULL DEFAULT 'NULL', PRIMARY KEY (`account_id`)) ENGINE=MyISAM;ALTER table `login` add column account_type varchar(255) NOT NULL default 'NULL' after `birthdate`, add index (account_type);UPDATE `login` SET `account_type` = 'NULL';TRUNCATE `vip_bronze`;TRUNCATE `vip_gold`;TRUNCATE `vip_silver`;// base on victor's vip scriptprontera,150,150,5 script VIP system 56,{function statusvip;function expirevip;function mainmenu;function showlist;function deletevip;function addvip; mes .npc_Name$; query_sql "SELECT `account_type` FROM login WHERE `account_id` = "+ getcharid(3), .@acc_Type$; while( .@i < 3 && callfunc("str_toLower", .@acc_Type$ ) != .type_name$[.@i] ) set .@i, .@i +1; if( .@i == 3 ) mes "Hello "+ strcharinfo(0) +" you have an normal account. Get an "+ getitemname( .item_premium_b ) +", "+ getitemname( .item_premium_s ) +", "+ getitemname( .item_premium_g ) +" to get a premium account."; else { set .@expiration_Date$, statusvip( .type_name$[.@i], .@i +1, 1 ); mes "Hello "+ strcharinfo(0) +" you have an "+ .type_name$[.@i] +" and it will expire in "+ .@expiration_Date$; } goto L_player;OnWhisperGlobal: if ( getgmlevel() < 99 ) end;L_main: mes .npc_Name$; mes "Welcome, "+ strcharinfo(0) +"!"; mes "What can I do for you today?";L_player: next; set .@s, select( ( getgmlevel() < 99 ? "" : "VIP bronze Menu" ), ( getgmlevel() < 99 ? "" : "VIP silver Menu" ), ( getgmlevel() < 99 ? "" : "VIP gold Menu" ), ( ( countitem( .item_premium_b ) || countitem( .item_premium_s ) || countitem( .item_premium_g ) ) && .up_npc ? "Upgrade my account" : "" ), "Quit" ) -1; if ( .@s == 4 ) close; else if( .@s == 3 ) { setarray .@rank$, "b", "s", "g"; select("Bronze:Silver:Gold"); callfunc( "VIP_upgrade", 7, getd(".item_premium_"+.@rank$[@menu]), @menu ); } set .@a$, "[VIP "+ callfunc("str_toLower", .type_name$[.@s] ) +"]"; next; mes .npc_Name$; mes .@a$; // if( getgmlevel() < 99 ) { // set .@sub_s, select( "List Accounts", "Cancel" ); // if( .@sub_s == 2 ) close; // mainmenu( .@sub_s +2, .@s ); // } next; set .@sub_s, select( "Add/Extend Account", "Delete Account", "List Accounts", "Back" ); if ( .@sub_s == 4 || mainmenu( .@sub_s, .@s, .@a$ ) ) goto L_main;// Setting// -------OnInit: set .npc_Name$,"[VIP System v3.0]"; set .bronze_AccLvl, 1; // VIP bronze Account Level set .silver_AccLvl, 2; // silver set .gold_AccLvl, 3; // gold set .bronze_ExpRate, 25; // VIP bronze Exp Boost in % ( 1 = 1% ) set .silver_ExpRate, 50; // silver set .gold_ExpRate, 100; // gold set .bronze_ItemRate, 0; // VIP bronze Item Drop Boost in % ( 1 = 1% ) set .silver_ItemRate, 5; // silver set .gold_ItemRate, 10; // gold set .item_premium_b, 501; // ID item to upgrade your account to bronze set .item_premium_s, 502; // ID item to upgrade your account to silver set .item_premium_g, 503; // ID item to upgrade your account to gold set .fcp, 0; // fcp for gold vip ? (0 : no) / (1 : yes) set .up_npc, 1; // player can upgrade to npc if items required 0 : no setarray .type_name$, "bronze", "silver", "gold" ; end;// On login// --------OnPCLoginEvent: query_sql "SELECT `account_type` FROM login WHERE `account_id` = "+ getcharid(3), .@acc_Type$; while( .@i < 3 && callfunc("str_toLower", .@acc_Type$ ) != .type_name$[.@i] ) set .@i, .@i +1; if( .@i == 3 ) end; sc_end sc_expboost; sc_end sc_itemboost; set .@expiration_Date$, statusvip( .type_name$[.@i], .@i, 0 ); dispbottom "----------------------------------------------------------------------"; dispbottom "Account type: "+ .@acc_Type$; dispbottom "Expiration date: "+ .@expiration_Date$; dispbottom "----------------------------------------------------------------------"; end;// Check the VIP status ; bonus VIP// --------------------------------function statusvip { query_sql "SELECT `status` FROM `vip_"+ getarg(0) +"` WHERE `account_id` = "+ getcharid(3), .@vip_Status$ ; query_sql "SELECT DATE_FORMAT(`end_date`, '%Y%m%d') FROM `vip_"+ getarg(0) +"` WHERE `account_id` = "+ getcharid(3), .@expiration_Date$ ; query_sql "SELECT CURDATE() + 0;", .@current_Date$ ; if( getarg(2) ) return .@expiration_Date$; if ( atoi(.@current_Date$) >= atoi(.@expiration_Date$) ) expirevip( "vip_"+ getarg(0), getcharid(3) ); else { set .@time, 3600 * 60 * 1000; set .@it_Rate, getd( "."+ getarg(0) +"_ItemRate" ); set .@exp_rate, getd( "."+ getarg(0) +"_ExpRate" ); if( .@exp_rate ) sc_start sc_expboost, .@time, .@exp_rate; if( .@it_Rate ) sc_start sc_itemboost, .@time, .@it_Rate; if( getarg(1) == 2 && .fcp ) { sc_start SC_CP_WEAPON, .@time, 5; sc_start SC_CP_SHIELD, .@time, 5; sc_start SC_CP_ARMOR, .@time, 5; sc_start SC_CP_HELM, .@time, 5; } } return .@expiration_Date$;}// VIP expire : updates tables// ---------------------------function expirevip { set .@T_Name$, getarg(0); set .@acc_Id, getarg(1); query_sql "UPDATE `login` SET `level` = 0, `account_type` = 'NORMAL' WHERE account_id = "+ .@acc_Id; query_sql "DELETE FROM "+ .@T_Name$ +" WHERE account_id = "+ .@acc_Id; query_sql "ALTER TABLE "+ .@T_Name$ +" AUTO_INCREMENT = 1"; sc_end SC_CP_WEAPON; sc_end SC_CP_SHIELD; sc_end SC_CP_ARMOR; sc_end SC_CP_HELM; dispbottom "Your VIP expire."; end;}function mainmenu { switch( getarg(0) ) { case 1: addvip( getarg(1), getarg(2) ); break; case 2: deletevip( getarg(1), getarg(2) ); break; case 3: showlist( getarg(1) ); } return 1;}function addvip { set .@s, getarg(0); set .@a$, getarg(1); mes .npc_Name$; mes .@a$; mes "Type the Account Name"; mes "you wish to add."; input .@acc_Name$; next; mes .npc_Name$; mes .@a$; query_sql "SELECT `account_id` FROM login WHERE `userid` = '"+ escape_sql( .@acc_Name$ )+"'", .@acc_Id ; mes "Identifying account: "+ .@acc_Name$ +"."; sleep2 500; if ( !.@acc_Id ) { mes "ERROR: Couldn't find account."; mes "Verify if you dind't make a typo."; close; } mes .npc_Name$; mes .@a$; mes "Type the number of days you"; mes "wish to add to the account's VIP"; mes "status."; next; while( input( .@Days, 1, 999 ) != 0 ) { mes .npc_Name$; mes .@a$; mes "Put a number between 1 and 999."; next; } mes .npc_Name$; mes .@a$; query_sql "SELECT `account_id` FROM vip_"+ .type_name$[.@s] +" WHERE `account_id` = "+ .@acc_Id, .@vip_accid; if ( .@vip_accid == .@acc_Id ) { mes "Account ID: "+ .@vip_accid +"."; sleep2 500; query_sql "UPDATE vip_"+ .type_name$[.@s] +" SET end_date = DATE_ADD(end_date, INTERVAL "+ .@Days +" DAY), `status` = 'ACTIVE' WHERE account_id = "+.@vip_accid; query_sql "UPDATE login SET `account_type` = '"+ callfunc("str_toUpper", .type_name$[.@s] ) +"' WHERE account_id = "+ .@vip_accid; mes "Account "+ .@acc_Id +" added successfuly!"; } else { mes "Account ID: "+ .@acc_Id +"."; sleep2 500; query_sql "INSERT INTO vip_"+ .type_name$[.@s] +" (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@acc_Id+",'"+ escape_sql( .@acc_Name$ ) +"',CURDATE(),CURDATE(),'ACTIVE')"; sleep2 100; query_sql "UPDATE vip_"+ .type_name$[.@s] +" SET end_date = DATE_ADD(start_date, INTERVAL "+ .@Days +" DAY) WHERE account_id = "+.@acc_Id; query_sql "UPDATE `login` SET `level` = "+ getd( "."+ .type_name$[.@s] +"_AccLvl" ) +", `account_type` = '"+ callfunc("str_toUpper", .type_name$[.@s] ) +"' WHERE `account_id` = "+.@acc_Id; mes "Account "+ .@acc_Id +" added successfuly!"; } close;}function deletevip { set .@s, getarg(0); set .@a$, getarg(1); set .@size, query_sql( "SELECT account_name,`account_id` FROM vip_"+ .type_name$[.@s] +" LIMIT 127", .@List$, .@acc_id ); mes .npc_Name$; mes .@a$; if ( .@size == 0 ) mes "There are currently no VIP "+ .type_name$[.@s] +" accounts."; else { mes "Select the account you wish "; mes "to remove from VIP system."; set .@j$, "1. "+ .@List$; for ( set .@i, 1; .@i < .@size; set .@i, .@i + 1 ) set .@j$, .@j$ +":"+ ( .@i +1 ) +". "+ .@List$[.@i]; set .@j$, .@j$ +":Cancel"; next; mes .npc_Name$; mes .@a$; set .@menu_del, select( .@j$ ) -1; if ( .@menu_del == .@size ) { next; return; } mes "Are you sure you want to remove the account "; mes .@List$[ .@menu_del ] +" ?"; if ( select( "Yes", "No" ) -1 ) { next; return; } query_sql "UPDATE `login` SET `level` = 0, `account_type` = 'NORMAL' WHERE `account_id` = '"+ .@acc_id +"'"; query_sql "DELETE FROM vip_"+ .type_name$[.@s] +" WHERE account_id = "+ .@acc_id; query_sql "ALTER TABLE vip_"+ .type_name$[.@s] +" AUTO_INCREMENT = 1"; mes "VIP "+ .type_name$[.@s] +" account successfuly deleted!."; } close;}function showlist { set .@s, getarg(0); mes .npc_Name$; mes "VIP "+ .type_name$[.@s] +" accounts list:"; set .@size, query_sql( "SELECT account_name FROM vip_"+ .type_name$[.@s] +" LIMIT 127", .@List$ ); if( .@size == 0 ) { mes "The list is empty."; close; } for ( set .@i, 0; .@i < .@size; set .@i, .@i + 1 ) mes ( .@i +1 )+". "+ .@List$[ .@i ]; close;}}// Upgrade via itemscript// ----------------------/*callfunc( "VIP_upgrade", 7, 12703, 0 );getarg(2) : 0 = up to bronze 1 = up to silver 2 = up to gold*/function script VIP_upgrade { if( select( "^777777~ Upgrade my account", "~ Not today^000000" ) -1 ) close; set .@acc_id, getcharid(3) ; setarray .@type_name$, "bronze", "silver", "gold" ; set .@bronze_AccLvl, 1; // VIP bronze Account Level set .@silver_AccLvl, 2; // silver set .@gold_AccLvl, 3; // gold query_sql "SELECT `userid`, `account_type` FROM `login` WHERE `account_id` = '"+ .@acc_id +"'", .@user_id$, .@acc_type$; while( .@i < 3 && callfunc("str_toLower", .@acc_Type$) != .@type_name$[.@i] ) set .@i, .@i +1; if ( .@i == 2 || ( .@i >= getarg(2) && .@i != 3 ) ) { dispbottom "Your can't upgrade your account."; close; } else if( .@i != 3 ) { query_sql "DELETE FROM vip_"+ .@type_name$[.@i] +" WHERE account_id = '"+ .@acc_id +"'"; query_sql "ALTER TABLE vip_"+ .@type_name$[.@i] +" AUTO_INCREMENT = 1"; } query_sql "INSERT INTO vip_"+ .@type_name$[ getarg(2) ] +" (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+ .@acc_id +",'"+ escape_sql( .@user_id$ ) +"', CURDATE(), ( DATE_ADD(CURDATE(), INTERVAL "+ getarg(0) +" DAY) ), 'ACTIVE') "; query_sql "UPDATE `login` SET `level` = "+ getd( ".@"+ .@type_name$[ getarg(2) ] +"_AccLvl" ) +", `account_type` = '"+ callfunc("str_toUpper", .@type_name$[getarg(2)]) +"' WHERE `account_id` = '"+ .@acc_id +"'"; query_sql "SELECT DATE_FORMAT(`end_date`, '%Y %M %d') FROM vip_"+ .@type_name$[ getarg(2) ] +" WHERE `account_id` = '"+ .@acc_id +"'", .@exp_Date$; message strcharinfo(0), "Account updated. Expiration : "+ .@exp_Date$; delitem getarg(1), 1; sleep2 1000; message strcharinfo(0), "You must relog."; sleep2 2000; if( playerattached() ) atcommand "@kick "+ strcharinfo(0); close;}// 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703, 0 ); /* 7 days, item ID to delete */ },{},{}// 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703, 1 ); /* 7 days, item ID to delete */ },{},{}// 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703, 2 ); /* 7 days, item ID to delete */ },{},{}/// callfunc "str_changecase", "<string>", <bool [true:UPPER/false:LOWER]> ;function script str_changecase { sleep2 1; if ( getarg(1) ) { setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "E", "I", "A", "S", "R", "N", "T", "O", "U", "L", "C", "P", "M", "D", "V", "H", "G", "F", "B", "Y", "Q", "K", "Z", "X", "J", "W", "_", "-"; } else { setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "e", "i", "a", "s", "r", "n", "t", "o", "u", "l", "c", "p", "m", "d", "v", "h", "g", "f", "b", "y", "q", "k", "z", "x", "j", "w", "_", "-"; } set .@charsize, getarraysize(.@char$); set .@str$, "|~key~|" + getarg(0) ; set .@len, getstrlen(getarg(0)); while( .@len>.@s ) { set .@i,0; while( .@i<.@charsize ) { if ( ! ( set(.@l,.@l+1) % 650) ) sleep2 1; if ( compare( .@str$ , "|~key~|" + .@tmp$ + .@char$[.@i] ) ) { set .@tmp$, .@tmp$ + .@char$[.@i]; break; } set .@i, .@i+1; } if ( .@i == .@charsize ) return ""; else set .@s, .@s+1; } return .@tmp$;}/// callfunc "str_toLower", "<string>" ;/// callfunc "str_toUpper", "<string>" ;function script str_toLower { return callfunc("str_changecase", getarg(0), 0 ); }function script str_toUpper { return callfunc("str_changecase", getarg(0), 1 ); }
  17. yeah, when you patch Custom Aura Sprites, client will crash if you use /aura. About the Remove GM Suit patch, when you try to patch it, it dislocates the head of the characters.
  18. Neomind: Does your patch for custom job and shield support the login screen window and cancel button?
  19. Beret: Well it's possible but that will require hexing the client using http://www.ollydbg.de/ But I don't think that over 6 digits is supported on ragexe...ask the professionals maybe they knew something about it.
  20. Just wanted to share For thousands of years, a mysterious melody has mesmerized the guardian for thousands of years. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away. When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world, and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people. Now, the only way to get to Bifrost is through the Labyrinth Forest. With the Hazy Forest opened up, new adventures await only the bravest warriors. You can aid the Mora tribe or search for the Wandering Guardian to shed more light into the mystery of Bifrost.
  21. http://rathena.org/board/topic/63048-how-to-reset-the-castle/
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.