Jump to content

Yaoi

Members
  • Posts

    26
  • Joined

  • Last visited

Posts posted by Yaoi

  1. 
     Im trying to add columns in picklog db so ive made these queries:
    
    ALTER TABLE `picklog` ADD `account_id` int( 11 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `char_id`;
    
    ALTER TABLE `picklog` ADD `name` varchar( 30 ) NOT NULL DEFAULT '' AFTER `time`;
    

     

    I already have the tables added in picklog but how do i make it works?, do i have to edit any source, log.cpp or something?

    (in picklog i want it shows the char name of the char id and the account id of this char id.)

     

  2. Hi community!

    I would like to know how to add a new permanent table in the picklog db showing the char names... Actually it only shows the char id.

    someone helped me time ago to do it with a QUERY : 

    SELECT id,time,picklog.char_id,type,nameid,amount,refine,card0,card1,card2,card3,unique_id,map,char.name FROM picklog LEFT JOIN `char` ON char.char_id = picklog.char_id;


    But i want to make it permanent, Thanks.

  3. Hi.
    Just wanna know which script commands is used to check the server's day of the week.

    i mean if i want to start a script automatically every Sunday, which script command should i use for it ?

    it is for fixing this script... :
     

    -	script	no3jobswoe	-1,{
    
    OnInit:
    	setmapflag "aldeg_cas02",mf_loadevent;
    	end;
    
    OnPCLoadMapEvent:
    	.@map$ = strcharinfo(3);
    	if ( getmapflag( .@map$,mf_gvg_castle ) ) {
    		if ( Class >= 4054 && gettime(3) == 21 ) {
    			mes "Today only 2nds Jobs are allowed to enter the castle.";
    			close2;
    			warp "SavePoint",0,0;
    		}
    	}
    	end;
    }

     

  4. //===== rAthena Script =======================================
    //= Euphy's WOE Controller
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.5
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= A controller for War of Emperium designed for
    //= simplicity and ease of use.
    //= Many concepts taken from ToastOfDoom's script,
    //= and "rewards" function originally by Goddameit.
    //===== Additional Comments: =================================
    //= Be sure to disable the default agit controllers!
    //== npc\guild\agit_controller.txt
    //== npc\guild2\agit_start_se.txt
    //============================================================
    
    // Information NPC
    //============================================================
    prontera,143,191,4	script	WOE Information	835,{
    	doevent "WOE_CONTROL::OnMenu";
    	end;
    OnAgitStart:
    	while(agitcheck()) {
    		specialeffect 964;
    		sleep 425;
    	}
    	end;
    }
    
    // Script Core
    //============================================================
    -	script	WOE_CONTROL	-1,{
    function Disp_Owner; function Add_Zero;
    
    OnInit:
    
    // -----------------------------------------------------------
    //  Configuration settings.
    // -----------------------------------------------------------
    
    	set .CastleWarp,0;		// 1: Always enable all castle warps. | 0: Warp only to active castles.
    	set .AutoKick,1;		// Automatically kick players from inactive castles during WOE? (1:yes / 0:no)
    	set .NoOwner,0; 		// Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no)
    	set .ExitWarp,0;		// Warp all players from castles when WOE ends? (1:yes / 0:no)
    	set .GMAccess,99;		// GM level required to access Session Manager.
    
    // -----------------------------------------------------------
    //  Reward options.
    // -----------------------------------------------------------
    //  [1] Enable rewards.
    //  [2] Mail all rewards.
    //      - If not set, players receive items in their inventory.
    //      - Only ONE item can be sent via mail, plus Zeny.
    //      - Note that offline players do NOT receive rewards.
    //  [4] Only reward Guild Masters.
    //      - If not set, all guild members are rewarded.
    //      - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards.
    //  [8] Duplicate IP check.
    //      - Members in a guild with the same IP address are not rewarded.
    //      - If Guild Masters is enabled (option 4), this feature is not used.
    // -----------------------------------------------------------
    
    	// Combine values as needed (e.g. 1|8 = 1+8 = 9).
    	set .Options, 1|8;
    
    	// Rewards per castle.
    	// -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...}
    	// -- via mail (option 2): <itemID>,<amount>,<Zeny>
    	setarray .Reward[0],30076,1,30078,1,30073,10,30077,1,12038,1;
    
    // -----------------------------------------------------------
    //  Constants (leave this section alone).
    // -----------------------------------------------------------
    
    	setarray .Castles$[0],
    		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
    		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
    		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
    		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
    		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
    		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
    	setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05";
    	setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
    	setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt";
    	setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld";
    	setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71;
    	setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315;
    
    // -----------------------------------------------------------
    
    	set .Size, getarraysize($WOE_CONTROL);
    	if (.AutoKick || .NoOwner)
    		for(set .@i,0; .@i<30; set .@i,.@i+1) {
    			setmapflag .Castles$[.@i], mf_loadevent;
    			setd "."+.Castles$[.@i], .@i;
    		}
    	if (!agitcheck() && !agitcheck2()) sleep 4000;
    	set .Init,1;
    
    OnMinute00:
    	freeloop(1);
    	if (agitcheck() || agitcheck2()) {
    		for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    			if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) == $WOE_CONTROL[.@i+2]) {
    			OnWOEEnd:
    				announce "La Guerra de Emperium ha finalizado!",bc_all|bc_woe;
    				AgitEnd; AgitEnd2;
    				sleep 1000;
    				for(set .@j,0; .@j<30; set .@j,.@j+1) {
    					if (.Active[0]&(1<<.@j)) Disp_Owner(.Castles$[.@j],1);
    					if (.ExitWarp) maprespawnguildid .Castles$[.@j],0,3;
    				}
    				if (.Options&1 && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
    				deletearray .Active[0],2;
    				if (.ForceEnd) { set .ForceEnd,0; end; }
    				break;
    			}
    	}
    	if ((!agitcheck() && !agitcheck2()) || .Init) {
    		if (!agitcheck() && !agitcheck2()) set .Init,0;
    		for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    			if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) >= $WOE_CONTROL[.@i+1] && gettime(3) < $WOE_CONTROL[.@i+2]) {
    				deletearray .Active[0],2;
    				set .Active[0], $WOE_CONTROL[.@i+3];
    				if (.Init) { AgitEnd; AgitEnd2; }
    				else announce "La Guerra de Emperium ha Iniciado!",bc_all|bc_woe;
    				sleep 1000;
    				AgitStart; AgitStart2;
    				for(set .@j,0; .@j<30; set .@j,.@j+1) {
    					if (.Active[0]&(1<<.@j)) {
    						if (!.Init) Disp_Owner(.Castles$[.@j],0);
    						set .Active[1], .Active[1] | (1<<((.@j/5)+1));
    					} else {
    						if (.@j<20) {
    							donpcevent "Agit#"+.Castles$[.@j]+"::OnAgitEnd";
    							killmonster .Castles$[.@j], "Agit#"+.Castles$[.@j]+"::OnAgitBreak";
    						} else {
    							donpcevent "Manager#"+.Castles$[.@j]+"::OnAgitEnd2";
    							killmonster .Castles$[.@j], "Steward#"+.EndLabel$[.@j-20]+"::OnStartArena";
    						}
    					}
    				}
    				break;
    			}
    	}
    	set .Init,0;
    	end;
    
    function Disp_Owner {
    	set .@o, getcastledata(getarg(0),1);
    	if (.@o) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname(.@o)+"] guild.",bc_all|bc_woe;
    	else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe;
    	return;
    }
    function Add_Zero {
    	return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
    }
    
    OnReward:
    	set .@sql$, ((.Options&4)?"position = 0":"online = 1");
    	if (.Options&2) set .@str$,gettimestr("%B %d, %Y",21);
    	freeloop(1);
    	for(set .@i,0; .@i<30; set .@i,.@i+1)
    		if (getarg(0)&(1<<.@i)) {
    			set .@gid, getcastledata(.Castles$[.@i],1);
    			if (!.@gid) continue;
    			set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@gid+"' AND "+.@sql$,.@aid,.@cid);
    			for(set .@j,0; .@j<.@size; set .@j,.@j+1) {
    				if (.Options&8 && !(.Options&4)) {
    					set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
    					if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
    					setd ".@ip_"+.@i+"_"+.@ip$,1;
    				}
    				if (.Options&2) {
    					query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+
    					          "'no-reply',"+.@cid[.@j]+",'** Siege Reward: "+getcastlename(.Castles$[.@i])+" **',"+
    					          "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "+.@str$+".% % % % % [ Your reward is attached. ]',"+
    					          .Reward[0]+","+.Reward[1]+",0,"+.Reward[2]+",UNIX_TIMESTAMP(NOW()))");
    					if (!getd(".@str_"+.@cid[.@j]) && isloggedin(.@aid[.@j],.@cid[.@j])) {
    						setd ".@str_"+.@cid[.@j],1;
    						message rid2name(.@aid[.@j]),"You've got mail! Please re-login to update your mailing list.";
    					}
    				} else if (isloggedin(.@aid[.@j])) {
    					for(set .@k,0; .@k<getarraysize(.Reward); set .@k,.@k+2)
    						getitem .Reward[.@k], .Reward[.@k+1], .@aid[.@j];
    					message rid2name(.@aid[.@j]),"You have been rewarded for conquering "+getcastlename(.Castles$[.@i])+".";
    				}
    			}
    		}
    	if (.Options&2) query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
    	return;
    
    OnPCLoadMapEvent:
    	if (!compare(strcharinfo(3),"g_cas")) end;
    	if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) {
    		if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end;
    		sleep2 1000;
    		message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive.";
    		sleep2 5000;
    		if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;
    	}
    	end;
    
    OnMenu:
    while(1) {
    	mes "[WOE Information]";
    	if (agitcheck() || agitcheck2()) {
    		if (.Active[0]) {
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) >= $WOE_CONTROL[.@i+1] && gettime(3) < $WOE_CONTROL[.@i+2]) {
    					set .@i, $WOE_CONTROL[.@i+2];
    					break;
    				}
    			mes "La Guerra de Emperium esta ^0055FFActiva^000000 hasta ^FF0000"+Add_Zero(.@i)+"^000000 en la siguiente zona:";
    			mes " ";
    			for(set .@i,0; .@i<6; set .@i,.@i+1)
    				if (.Active[1]&(1<<(.@i+1))) mes " > ^777777"+.Regions$[.@i]+"^000000";
    		} else
    			mes "La Guerra de Emperium esta ^0055FFActiva^000000.";
    	} else {
    		for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    			if ((gettime(4) == $WOE_CONTROL[.@i] && gettime(3) <= $WOE_CONTROL[.@i+1]) || gettime(4) < $WOE_CONTROL[.@i]) {
    				setarray .@time[0],$WOE_CONTROL[.@i],$WOE_CONTROL[.@i+1];
    				break;
    			}
    		if (!getarraysize(.@time))
    			setarray .@time[0],$WOE_CONTROL[0],$WOE_CONTROL[1];
    		mes "La Guerra de Emperium esta ^777777Inactiva^000000.";
    		if (.Size) {
    			mes " ";
    			mes "The next session will begin";
    			mes "on ^0055FF"+.Days$[.@time[0]]+"^000000 at "+Add_Zero(.@time[1])+"^000000.";
    		}
    	}
    	next;
    	switch(select(""+((.CastleWarp || .Active[1])?" ~ Warp to castles...":"")+": ~ Check schedule...: ~ View castle owners...:"+((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions...")+": ~ ^777777Cancel^000000")) {
    	case 1:
    		if (.CastleWarp) set .@clr$,"^0055FF";
    		set .@menu$,"";
    		for(set .@i,0; .@i<6; set .@i,.@i+1) {
    			if (.CastleWarp || .Active[1]&(1<<(.@i+1)))
    				set .@menu$, .@menu$+" ~ "+((.Active[1]&(1<<(.@i+1)))?.@clr$:"^777777")+.Regions$[.@i]+" Castles^000000";
    			set .@menu$, .@menu$+":";
    		}
    		set .@i, select(.@menu$)-1;
    		set .@menu$,"";
    		for(set .@j,.@i*5; .@j<(.@i*5)+5; set .@j,.@j+1) {
    			if (.CastleWarp || .Active[0]&(1<<.@j))
    				set .@menu$, .@menu$+" ~ "+((.Active[0]&(1<<.@j))?.@clr$:"^777777")+getcastlename(.Castles$[.@j])+"^000000";
    			set .@menu$, .@menu$+":";
    		}
    		set .@j, select(.@menu$)-1;
    		warp .Map$[.@i],.MapX[(.@i*5)+.@j],.MapY[(.@i*5)+.@j];
    		close;
    	case 2:
    		mes "[Schedule]";
    		if (.Size) {
    			freeloop(1);
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4) {
    				mes "> ^FF0000"+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1])+"-"+Add_Zero($WOE_CONTROL[.@i+2])+")^000000";
    				for(set .@j,0; .@j<30; set .@j,.@j+1)
    					if ($WOE_CONTROL[.@i+3]&(1<<.@j)) mes "  ~ "+getcastlename(.Castles$[.@j])+" ^777777("+.Castles$[.@j]+")^000000";
    				if (.@i+4 < .Size) mes " ";
    			}
    			freeloop(0);
    		} else
    			mes "No times are configured.";
    		next;
    		break;
    	case 3:
    		mes "[Castle Ownership]";
    		for(set .@i,0; .@i<6; set .@i,.@i+1) {
    			set .@k, .@i*5;
    			mes "> ^FF0000"+.Regions$[.@i]+"^000000";
    			for(set .@j,.@k; .@j<(.@k+5); set .@j,.@j+1) { 
    				set .@t, getcastledata(.Castles$[.@j],1);
    				mes "  ~ "+getcastlename(.Castles$[.@j])+": "+((.@t)?"^0055FF"+getguildname(.@t):"^777777unoccupied")+"^000000";
    			}
    			if (.@i < 5) mes " ";
    		}
    		next;
    		break;
    	case 4:
    	while(1) {
    		mes "[Session Manager]";
    		mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured.";
    		mes "What would you like to do?";
    		next;
    		switch(select(" ~ Add a session...: ~ Delete a session...: ~ Reload settings...:"+((agitcheck() || agitcheck2())?" ~ End WOE session...":"")+": ~ ^777777Go back^000000")) {
    		case 1:
    			mes "[New Session]";
    			if (.Size > 127) {
    				mes "You have already reached the maximum of 32 sessions.";
    				next;
    				break;
    			}
    			mes "Select a day.";
    			next;
    			set .@Day, select(" ~ "+implode(.Days$,": ~ "))-1;
    			mes "[New Session]";
    			mes "Select a start time for ^0055FF"+.Days$[.@Day]+"^000000.";
    			next;
    			set .@menu$,"";
    			for(set .@i,0; .@i<23; set .@i,.@i+1)
    				set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
    			set .@Start, select(.@menu$)-1;
    			mes "[New Session]";
    			mes "Select an end time for ^0055FF"+.Days$[.@Day]+"^000000.";
    			next;
    			set .@menu$,"";
    			for(set .@i,.@Start+1; .@i<24; set.@i,.@i+1)
    				set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
    			set .@End, select(.@menu$)+.@Start;
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				if (.@Day == $WOE_CONTROL[.@i] &&
    				   ((.@Start >= $WOE_CONTROL[.@i+1] && .@Start < $WOE_CONTROL[.@i+2]) ||
    				    (.@End > $WOE_CONTROL[.@i+1] && .@End <= $WOE_CONTROL[.@i+2]) ||
    				    (.@Start <= $WOE_CONTROL[.@i+1] && .@End >= $WOE_CONTROL[.@i+2]))) {
    					mes "[New Session]";
    					mes "The chosen times overlap with an existing session.";
    					next;
    					set .@d,1;
    					break;
    				}
    			if (.@d) { set .@d,0; break; }
    			set .@Castle,0;
    			while(1) {
    				mes "[New Session]";
    				mes "^0055FF"+.Days$[.@Day]+" ("+Add_Zero(.@Start)+"-"+Add_Zero(.@End)+")^000000";
    				mes " > Castles:";
    				if (!.@Castle)
    					mes "   ~ ^777777(none selected)^000000";
    				else for(set .@i,0; .@i<30; set .@i,.@i+1)
    					if (.@Castle&(1<<.@i)) mes "   ~ "+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")";
    				next;
    				set .@menu$,((.@Castle)?" ~ ^FF0000Finished...^000000":"")+":";
    				for(set .@i,0; .@i<30; set .@i,.@i+1)
    					set .@menu$, .@menu$+" ~ "+((.@Castle&(1<<.@i))?"^0055FF":"")+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")^000000:";
    				set .@i, select(.@menu$)-1;
    				if (.@i)
    					set .@Castle, .@Castle^(1<<(.@i-1));
    				else {
    					mes "[New Session]";
    					mes "Are you sure?";
    					next;
    					switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) {
    					case 1:
    						for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    							if ((.@Day == $WOE_CONTROL[.@i] && .@End <= $WOE_CONTROL[.@i+1]) || .@Day < $WOE_CONTROL[.@i]) {
    								set .@d,1;
    								break;
    							}
    						if (!.@d) { set .@d,1; set .@i,.Size; }
    						copyarray $WOE_CONTROL[.@i+4], $WOE_CONTROL[.@i], .Size-.@i;
    						setarray $WOE_CONTROL[.@i], .@Day, .@Start, .@End, .@Castle;
    						set .Size, getarraysize($WOE_CONTROL);
    					case 3:
    						mes "[New Session]";
    						mes ((.@d)?"Session added.":"Cancelled.");
    						next;
    						set .@d,1;
    					case 2:
    						break;
    					}
    					if (.@d) { set .@d,0; break; }
    				}
    			}
    			break;
    		case 2:
    			mes "[Remove Session]";
    			if (!.Size) {
    				mes "There are no sessions configured.";
    				next;
    				break;
    			}
    			mes "Select a session to remove.";
    			next;
    			set .@menu$,"";
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				set .@menu$, .@menu$+" ~ "+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1],1)+"-"+Add_Zero($WOE_CONTROL[.@i+2],1)+"):";
    			set .@menu$, .@menu$+" ~ ^777777Cancel^000000";
    			set .@i, select(.@menu$)-1;
    			if (.@i == (.Size/4)) break;
    			mes "[Remove Session]";
    			mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[.@i*4]]+"'s^000000 session?";
    			mes "This action cannot be undone.";
    			next;
    			set .@j, select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000");
    			mes "[Remove Session]";
    			if (.@j == 2)
    				mes "Cancelled.";
    			else {
    				deletearray $WOE_CONTROL[.@i*4],4;
    				set .Size, getarraysize($WOE_CONTROL);
    				mes "Session deleted.";
    			}
    			next;
    			break;
    		case 3:
    			mes "[Reload Settings]";
    			mes "This will trigger all events related to new session configurations, if any.";
    			if (agitcheck() || agitcheck2()) {
    				mes " ";
    				mes "Be aware that this will disrupt the current WOE session.";
    			}
    			next;
    			set .@i, select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000");
    			mes "[Reload Settings]";
    			if (.@i == 2) mes "Cancelled.";
    			else {
    				set .Init,1;
    				donpcevent "WOE_CONTROL::OnMinute00";
    				mes "Variables have been re-initialized.";
    			}
    			next;
    			break;
    		case 4:
    			mes "[Force Agit End]";
    			if (!agitcheck() && !agitcheck2())  {
    				mes "WOE has already ended.";
    				next;
    				break;
    			}
    			mes "This command will safely execute all AgitEnd events.";
    			mes " ";
    			mes "Kill the current WOE session?";
    			next;
    			set .@i, select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000");
    			mes "[Force Agit End]";
    			if (.@i == 3)
    				mes "Cancelled.";
    			else {
    				set .ForceEnd, .@i;
    				donpcevent "WOE_CONTROL::OnWOEEnd";
    				mes "WOE session terminated.";
    			}
    			next;
    			break;
    		case 5:
    			set .@d,1; break;
    		}
    		if (.@d) { set .@d,0; break; }
    		} break;
    	case 5:
    		close;
    	} }
    }
    //WOE Information 835
    invek,134,181,4	duplicate(WOE Information)	WOE Information#inv	835

    Actually im using de Euphy's WOE Controller 1.5 and just wondering how can i add an option to make the emperium walkable randomly (in the emperium room only) and add it to configuration settings to be able to edit at any time.
     

  5. Hi, I need a script that checks quantity of guild members in guild castles.


    - Max users allowed per guild in the same castle = 15
    -If users are > 15, the 16th user member of the same guild will be warped to save point automatically.

    -Npc with gm access to modify the quantity of members allowed in guild castles maps.

    note: i know there's a way to modify the guild members qty (like changing the guild extension skill lvl) but i prefer to use the script.

    I would pay for the script if its necessary.

  6. Thanks Mystrs 
    but the question is How to do that ? hehe


    Which files do i have to modify? 


    Thanks again.



    i want to know this because when i was using ragexe 2012-04-10  i was able to Kill or see the npc real name added in the scripts without using commands @. 
    but when update to 2013 client this function does not work.

    its very helpful to have this option.

  7. Hi rAthena!

    Currently Im using the JayPee Mateo Voteforpoints NPC. 
    Its working Nice!

     

    //setarray .itemShop[0],	30005,700,30024,600,5545,200,5546,200,5514,200,5515,200,5588,200,5589,200,5598,200,5599,200,5662,200,5663,200,5739,200,5740,200,5676,200,5677,200,5744,200,5745,200,5512,200,5513,200,5549,200,5550,200,607,1; // <ITEM_ID>,<PRICE>
    //====================================================================================
    //Script Name: Vote For Points NPC Script for FluxCP
    //SVN: Tested in rAthena r156513
    //Developed By: JayPee Mateo
    //Version: 1.0
    //Requirement(s): FluxCP V4P Addon
    //Description: This is a npc script for FluxCP Vote for points in order for the players
    //to claim their vote points
    //====================================================================================
    
    florian,204,164,4	script	VotaPuntos	862,{
    
    //Function Prototypes
    function garbagecol;//Garbage collection for the Character variables
    garbagecol();
    function add_item; //Syntanx: add_item(ITEMID,QUANTITY,POINTS,CATEGORY);
    function makeCategory;//This will return a list of the categories
    function getItemsByCat;//This will return the list of items associated to the particular category
    function getItemDetails;//This will return the details of the item
    function getPoints;//This will return the points of the player stored in the database
    function updatePoints;//This will updates the points of the player stored in the database
    
    
    //NPC Name
    set .npcname$,"[ Vota Puntos ]";
    	
    //Initialization of the Rewards
    
    add_item(18743,1,400,"Costume");
    add_item(30124,1,400,"Costume");
    add_item(19661,1,500,"Costume");
    add_item(12036,1,2,"Consumibles");
    add_item(12037,1,2,"Consumibles");
    add_item(18859,1,400,"Hats");
    add_item(18540,1,400,"Hats");
    add_item(18844,1,400,"Hats");
    
    
    //Script Start	
    	mes .npcname$;
    	mes "Gracias por ayudar al servidor a crecer con tus votos, Te gustaria cambiar tus puntos de votacion?";
    	switch(select("Si:Ver mis puntos"))
    	{
    		case 1:
    		next;
    			mes .npcname$;
    			mes "Porfavor elige una categoria:";
    			set .@selected,select(makeCategory())-1;
    		next;
    			mes .npcname$;
    			mes "Porfavor elige el articulo que deseas:";
    			set .@selected,select(getItemsByCat(@listCat$[.@selected]))-1;
    			
    		next;
    			mes .npcname$;						
    			set .@ritemid,getItemDetails(@itemKeys[.@selected],"itemid");
    			set .@rquantity,getItemDetails(@itemKeys[.@selected],"quantity");
    			set .@rpoints,getItemDetails(@itemKeys[.@selected],"points");
    			mes "ID del articulo:"+.@ritemid;
    			mes "Nombre del Articulo: "+getitemname(.@ritemid);
    			mes "Cantidad: "+.@rquantity+" pc(s).";
    			mes "Costo por articulo: "+.@rpoints+" pt(s).";
    			mes "\n";
    			mes "hacemos trato?";
    			if(select("Si:No")==1)
    			{
    				set .@points,getPoints(getcharid(3));
    				if(.@points>=.@rpoints)
    				{
    					next;
    					mes .npcname$;			
    					updatePoints(getcharid(3),.@rpoints);
    					getitem .@ritemid,.@rquantity;
    					mes "Gracias por votar!. No olvides hacerlo de nuevo!. :D";
    				}
    				else
    					mes "Lo siento, no tienes los puntos necesarios para este articulo.";				
    			}
    			else
    			{
    				next;
    				mes .npcname$;			
    				mes "Okay bye!";
    			}			
    			garbagecol();
    		close;
    		case 2:
    			next;
    			mes .npcname$;			
    			set .@points,getPoints(getcharid(3));			
    			mes "Actualmente dispones de "+.@points+" pt(s).";
    			garbagecol();
    		close;
    	}
    end;
    
    //Functions Bodies
    	function updatePoints {
    		set .@account_id,getarg(0);
    		set .@usedPoints,getarg(1);
    		query_sql("UPDATE `cp_v4p_voters` SET points=(points-"+.@usedPoints+") WHERE account_id='"+.@account_id+"'");
    		return;
    	}
    
    	function getPoints {
    		set .@account_id,getarg(0);
    		query_sql("SELECT `points` FROM `cp_v4p_voters` WHERE account_id="+.@account_id+" LIMIT 1",.@points);
    		if(getarraysize(.@points)==0)
    			return 0;		
    		return .@points[0];
    	}
    
    	function getItemDetails {
    		set .@key,getarg(0); //Key
    		set .@detail$,getarg(1); //What details to return such as ItemID, Points, Quantity, Category
    		
    		if(strtolower(.@detail$) == strtolower("ItemID"))
    			return @itemID[.@key];
    		else if(strtolower(.@detail$) == strtolower("Quantity"))
    			return @itemQ[.@key];
    		else if(strtolower(.@detail$) == strtolower("Points"))
    			return @points[.@key];
    		else if(strtolower(.@detail$) == strtolower("Category"))
    			return @category$[.@key];
    	}
    
    	function getItemsByCat {		
    		set .@selectedCat$,getarg(0);
    		set .@make_string$,"";
    		set .@x,0;
    		for(set .@i,0; .@i<getarraysize(@category$); set .@i,.@i+1)
    		{
    			if(strtolower(.@selectedCat$) == strtolower(@category$[.@i]))
    			{
    				setarray @itemKeys[.@x],.@i;
    				if(.@make_string$ == "")
    					set .@make_string$,getitemname(@itemID[.@i]);
    				else
    					set .@make_string$,.@make_string$+":"+getitemname(@itemID[.@i]);
    				
    				set .@x,.@x+1;
    			}
    		}
    		return .@make_string$;
    	}
    	
    	
    	function makeCategory {
    		set .@make_string$,"";
    		for(set .@i,0; .@i<getarraysize(@category$); set .@i,.@i+1)
    		{			
    			if(.@make_string$ == "")
    			{
    				setarray @listCat$[getarraysize(@listCat$)],@category$[.@i];
    				set .@make_string$,@category$[.@i];
    			}
    			else
    			{
    				if(compare(.@make_string$,@category$[.@i])==0)
    				{
    					setarray @listCat$[getarraysize(@listCat$)],@category$[.@i];
    					set .@make_string$,.@make_string$+":"[email protected]<script data-cfhash='f9e31' type="text/javascript">/*  */</script>$[.@i];				
    				}
    			}
    		}
    		return .@make_string$;
    	}
    			
    	function add_item
    	{
    		set .@itemID,getarg(0,-1); //IteID
    		set .@itemQ,getarg(1,-1); //Item Quantity
    		set .@points,getarg(2,-1);
    		set .@cat$,getarg(3,"Uncategorized"); //Category
    		
    		
    		if(.@itemID == -1)
    		{
    			debugmes "Invalid Item ID. Script not completely loaded.";
    			end;
    		}
    		else if(.@itemQ == -1)
    		{
    			debugmes "Invalid Item Quantity. Script not completely loaded.";
    			end;
    		}
    		else if(.@points == -1)
    		{
    			debugmes "Points assignment error. Script not completely loaded.";
    			end;
    		}
    		set .@key,getarraysize(@itemID);
    		setarray @itemID[.@key],.@itemID;
    		setarray @itemQ[.@key],.@itemQ;
    		setarray @points[.@key],.@points;
    		setarray @category$[.@key],.@cat$;
    		return 1; //return 1 as success
    	}
    	
    	function garbagecol{
    		deletearray @itemID[0],128;
    		deletearray @itemQ[0],128;
    		deletearray @points[0],128;	
    		deletearray @category$[0],128;	
    		deletearray @listCat$[0],128;
    		deletearray @itemKeys[0],128;
    		return;
    	}
    }
    

    But I would like to make it similar to the Euphy's Dynamic Shop with the changelook option, costume headgears changelook. etc.

     

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6c
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.2 Added category support.
    //= 1.3 More options and fixes.
    //= 1.4 Added debug settings.
    //= 1.5 Replaced categories with shop IDs.
    //= 1.6 Added support for purchasing stackables.
    //= 1.6a Added support for previewing costumes and robes.
    //= 1.6b Added 'disable_items' command.
    //= 1.6c Replaced function 'A_An' with "F_InsertArticle".
    //============================================================
    
    // Shop NPCs -- supplying no argument displays entire menu.
    //	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    florian,83,135,6	script	Sombreros Quest#1	408,{ callfunc "qshop"; }
    
    
    // Script Core
    //============================================================
    -	script	quest_shop	-1,{ 
    function Add; function Chk; function Slot;
    OnInit:
    	freeloop(1);
    
    // -----------------------------------------------------------
    //  Basic shop settings.
    // -----------------------------------------------------------
    
    	set .Announce,1;	// Announce quest completion? (1: yes / 0: no)
    	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
    	set .ShowID,0;  	// Show item IDs? (1: yes / 0: no)
    	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
    	set .MaxStack,100;	// Max number of quest items purchased at one time.
    
    // -----------------------------------------------------------
    //  Points variable -- optional quest requirement.
    //	setarray .Points$[0],"<variable name>","<display name>";
    // -----------------------------------------------------------
    
    	setarray .Points$[0],"#CASHPOINTS","Cash Points";
    
    // -----------------------------------------------------------
    //  Shop IDs -- to add shops, copy dummy data at bottom of file.
    //	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
    // -----------------------------------------------------------
    
    	setarray .Shops$[1],"Sombreros";
    
    // -----------------------------------------------------------
    //  Quest items -- do NOT use a reward item more than once!
    //	Add(<shop ID>,<reward ID>,<reward amount>,
    //	    <Zeny cost>,<point cost>,
    //	    <required item ID>,<required item amount>{,...});
    // -----------------------------------------------------------
    
    	Add(1,18930,1,0,0,7011,100,10018,20,753,100,6242,200);
    	Add(1,18931,1,0,0,1060,150,1048,200,2249,50,6242,200);
    	Add(1,18932,1,0,0,947,200,6023,100,6022,10,6242,200);
    	Add(1,18547,1,0,0,12374,150,12018,500,2250,50,6242,200);
    	Add(1,18548,1,0,0,7799,200,2252,70,975,20,6242,200);
    	Add(1,18549,1,0,0,7168,300,2718,50,710,150,6242,200);
    
    //
    //	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
    //	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
    //
    //	Add(3,531,1,3,0,512,1,713,1);
    //	Add(3,532,1,3,0,513,1,713,1);
    //	Add(3,533,1,3,0,514,1,713,1);
    //	Add(3,534,1,3,0,515,1,713,1);
    
    // -----------------------------------------------------------
    
    	freeloop(0);
    	set .menu$,"";
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
    		set .menu$, .menu$+.Shops$[.@i]+":";
    		npcshopdelitem "qshop"+.@i,909;
    	}
    	end;
    
    OnMenu:
    	set .@size, getarraysize(@i);
    	if (!.@size) set @shop_index, select(.menu$);
    	else if (.@size == 1) set @shop_index, @i[0];
    	else {
    		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
    			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
    		set @shop_index, @i[select(.@menu$)-1];
    	}
    	deletearray @i[0],getarraysize(@i);
    	if (.Shops$[@shop_index] == "") {
    		message strcharinfo(0),"An error has occurred.";
    		end;
    	}
    	dispbottom "Select one item at a time.";
    	callshop "qshop"+@shop_index,1;
    	npcshopattach "qshop"+@shop_index;
    	end;
    
    OnBuyItem:
    	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
    	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
    	copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0]));
    	set .@q[2],.@q[1]*.@q[3];
    	if (!.@q[2] || .@q[2] > 30000) {
    		message strcharinfo(0),"No puedes comprar tantos hats "+getitemname(.@q[0])+".";
    		end;
    	}
    	mes "[Quest Shop]";
    	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
    	mes "Requirements:";
    	disable_items;
    	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
    	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
    	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
    	next;
    	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
    	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
    		set .@preview,1;
    	addtimer 1000, strnpcinfo(0)+"::OnEnd";
    	while(1) {
    		switch(select(" Obtener ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" Probarmelo...":"")+": ^777777Nada^000000")) {
    		case 1:
    			if (@qe[0]) { 
    				mes "[Quest Shop]";
    				mes "Parece que no tienes todo, revisa tu inventario.";
    				close;
    			}
    			if (!checkweight(.@q[0],.@q[2])) {
    				mes "[Quest Shop]";
    				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
    				close;
    			}
    			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
    			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
    			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
    			getitem .@q[0],.@q[2];
    			if (.Announce) announce strcharinfo(0)+" Se ha creado un "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[0])))+"!",0;
    			specialeffect2 EF_FLOWERLEAF;
    			close;
    		case 2:
    			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
    			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
    			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
    			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
    			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
    			break;
    		case 3:
    			close;
    		}
    	}
    
    OnEnd:
    	if (@qe[7]) {
    		changelook LOOK_HEAD_BOTTOM, @qe[3];
    		changelook LOOK_HEAD_TOP, @qe[4];
    		changelook LOOK_HEAD_MID, @qe[5];
    		changelook LOOK_ROBE, @qe[6];
    	}
    	deletearray @qe[0],8;
    	end;
    
    function Add {
    	if (getitemname(getarg(1)) == "null") {
    		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
    		return;
    	}
    	setarray .@j[0],getarg(2),getarg(3),getarg(4);
    	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
    		if (getitemname(getarg(.@i)) == "null") {
    			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
    			return;
    		} else
    			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
    	}
    	copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
    	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
    	return;
    }
    
    function Chk {
    	if (getarg(0) < getarg(1)) {
    		set @qe[0],1;
    		return "^FF0000";
    	} else
    		return "^00FF00";
    }
    
    function Slot {
    	set .@s$,getitemname(getarg(0));
    	switch(.ShowSlot) {
    		case 1: if (!getitemslots(getarg(0))) return .@s$;
    		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
    		default: return .@s$;
    	}
    }
    }
    
    function	script	qshop	{
    	deletearray @i[0],getarraysize(@i);
    	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
    		set @i[.@i],getarg(.@i);
    	doevent "quest_shop::OnMenu";
    	end;
    }
    
    
    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	qshop1	-1,909:-1
    -	shop	qshop2	-1,909:-1
    -	shop	qshop3	-1,909:-1
    -	shop	qshop4	-1,909:-1
    -	shop	qshop5	-1,909:-1
    

    Please help, ill pay if its possible.
    Thanks.

    :D

  8.  
    -	script	nostoreall2	-1,{
    end;
    OnInit:
    	bindatcmd "storeall",strnpcinfo(0)+"::OnAtcommand";
    end;
    OnAtcommand:
    	if( strcharinfo(3) == "sec_pri" ) end;
    
    	atcommand "@storeall "+strcharinfo(0)+"";
    end;
    }
    

    Users can use #storeall to other players
    How can i fix this? 

    thanks in advance.

  9. thank you all, searching in the forum i found this script, i think it is a little usefull anyway. now im using it,  it works great

     

     

     

    prontera,150,180,5    script    restricted_manner    -1,{
    OnInit:
        setarray .@bad_word$, "noob", "coward"; // add as your content lol
        .@size_b = getarraysize( .@bad_word$ );
        for( ; .@i < .@size_b; .@i++ )
            defpattern 1, "([^:]+):.*\\s"+ .@bad_word$[.@i] +".$", "warning";
        activatepset 1;
        end;
    warning:
        @warning++;
        if ( @warning == 3 ) {
            @warning = 0;
            deltimer strnpcinfo(0) +"::OnDelay";
            atcommand "@mute 5 "+ strcharinfo(0);
        }
        else {
            deltimer strnpcinfo(0) +"::OnDelay";
            addtimer 300000, strnpcinfo(0) +"::OnDelay";
            message strcharinfo(0), "Be careful with your language... Warning "+ @warning +"/3";
        }
        end;
    OnDelay:
        @warning = 0;
        end;
    }
  10. how can be excluded when someone is promoting servers?, for example if the user is promoting  yellow- ro, when they type the enter key nothing happends, the messeage doesnt send.

    So I would like a script where I can add forbidden words in the normal chat.

  11. Hi i would like to have a script like this to make a great pvp hour full of users :D
     

    1. Only When it is @time 22:00 this script starts
    2. When killing another user they recieve a certain coin per every kill [ poring coins 7539]
    3. This script only work in certain map [ guild_vs2 ]
    4. When it is @time 23:00 the script ends
     
  12. hi, I would like to get a script that reward certain item every hour to autotrade users only. 

    similar to the hourlypoints script.



    Autotrade users recieve 2 Platinium Coins (id 677) every 1 hour, 
    Users cannot have more than 1 Shop in autotrade mode ( ip block)
     

×
×
  • Create New...