Jump to content

Louis T Steinhil

Members
  • Content Count

    138
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Louis T Steinhil


  1. Well it's not that much but I hope someone will benefit from this. :P

    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.  :ph34r:

    splash-screen.rar


  2. 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/


  3. 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?


  4. 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"]}

  5. 				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;				}

  6. 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 ); }

     

     


  7. 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.

  8. Updated first post.

     

    Sentinel Mark 1 is finally complete. :D

     

    It is ready for release and stuff. *nods*

     

    Also decided to make combo items for it in the future*nods*

     

    ---

     

    @NeoMind: I see... Hmmm I'll probably need to get a hold of some robe sprites and see if I can play with them. :3

     

     

    Well there are animated robes, you can make them with the help of robe generator but it doesn't animate if you don't move or in attack stance and for example "The drake jacket". On headgear it is complete it really looks like a jacket, but when you convert it to robe the sprite seems to be complete also but when you take a look at the "side view" it seems that the half of the sprite doesn't show "outside". I think it's because robe sprites (just like the archangel wing) were meant to be at the back only. :P


  9. I tested 2013 - 06 - 05 and got a crash when I put an ip address on

     

    <?xml version="1.0" encoding="euc-kr" ?><clientinfo><servicetype>korea</servicetype><servertype>primary</servertype>   <connection>      <display>Project DestRO</display>      <balloon>Renewal Server</balloon>      <desc>High Rate Server</desc>      <address>192.168.1.8</address> // <<<-------- This part      <port>6900</port>      <version>30</version>      <langtype>0</langtype>   </connection></clientinfo>

    but when I changed it to localhost it doesn't crash. I enabled DNS support, does it have something to do with the crash?


  10. Hi does anyone know how can I make this a skill?

     

    ACMD(clone){	int x=0,y=0,flag=0,master=0,i=0;	struct map_session_data *pl_sd=NULL;	if (!message || !*message) {		clif->message(sd->fd,msg_txt(1323)); // You must enter a player name or ID.		return true;	}	if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) {		clif->message(fd, msg_txt(3));	// Character not found.		return true;	}	if(pc->get_group_level(pl_sd) > pc->get_group_level(sd)) {		clif->message(fd, msg_txt(126));	// Cannot clone a player of higher GM level than yourself.		return true;	}	if (strcmpi(command+1, "clone") == 0)		flag = 1;	else if (strcmpi(command+1, "slaveclone") == 0) {		flag = 2;		if(pc_isdead(sd)){		    clif->message(fd, msg_txt(129+flag*2));		    return true;		}		master = sd->bl.id;		if (battle_config.atc_slave_clone_limit			&& mob_countslave(&sd->bl) >= battle_config.atc_slave_clone_limit) {			clif->message(fd, msg_txt(127));	// You've reached your slave clones limit.			return true;		}	}	do {		x = sd->bl.x + (rnd() % 10 - 5);		y = sd->bl.y + (rnd() % 10 - 5);	} while (iMap->getcell(sd->bl.m,x,y,CELL_CHKNOPASS) && i++ < 10);	if (i >= 10) {		x = sd->bl.x;		y = sd->bl.y;	}	if((x = mob_clone_spawn(pl_sd, sd->bl.m, x, y, "", master, 0, flag?1:0, 0)) > 0) {		clif->message(fd, msg_txt(128+flag*2));	// Evil Clone spawned. Clone spawned. Slave clone spawned.		return true;	}	clif->message(fd, msg_txt(129+flag*2));	// Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone.	return true;}

  11. How to set a skill that has targets to be casted directly on ground? I mean you'll remove the target but when you click the skill, it will automatically cast the said skill on the ground you're stepping at. :P

×
×
  • Create New...

Important Information

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