Jump to content

llchrisll

Members
  • Posts

    625
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by llchrisll

  1. I tested them as good as possible, if there still should be any kind of bug please report them and yes they are all made by me. When I "copied" some parts I asked the original creators for permisson and gave credits. Login Settings may be similar to others, but I scripted it by myself ^^. (Was easy anyway o.o) Which SQL Password thing o.o, state your question a bit more clearly please D:, do you mean the Security System via SQL? Regards, Chris
  2. Hmm one file was "admin/pcidentity.lua/lub" and the other was "skillinfoz/jobinheritlist.lua/lub", but don't ask me about adding skills, I failed at that point.... Regards, Chris
  3. Well, it could also be a bug in the eAthena version I'm using for my test server, 14424 SQL Trunk was it. I deleted the whole if(getmapflag part, but just in case... Would an error show up when he tries to readd an mapflag to the same map again? I didn't try it yet,so I'm asking first to prevent another "brain burner" . Would have an different solution too though. Regards, Chris Edit: Can be closed, solved it by deleting the "getmapflag" commands >_>, my server doesn't show any error so it should be fine.
  4. You also need the required entries in your idnum2/num2(resnametable/displaynametable/descnametable).txt as well (carditem/cardpostfix/cardprefrix)nametable.txt and num2cardillustnametable.txt to have the work properly. Well as for the resnametables you could use the same entry from any other card since it's the same ^^. Cuz I don't believe you have those entries translated into english already, also it's possible that (which would be wondering) the kRo has different ID's than Yurika/doddler . @Yurika: 4505,Scaraba_Card,Scaraba Card,6,20,,10,,,,,,,,136,,,,,{ bonus bEMatk,10; bonus bMaxSPrate,-1; },{},{} Is "bonus bEMatk" new? or just typo? I read somewhere WATK o.o, well it was on the db/const.txt o.o SC_WATKFOOD 212, dunno what that is anyway . Regards, Chris
  5. Yeah, I wasn't testing any other script at the moment, cuz when I commented it out and "restarted" my server it continued till it stopped at MF 44 > mf_noexppenalty. I was confused about that first too >-<, why he shows errors at those mapflags.... To "restart" the server I used this OnWhisperGlobal: set .@re_in,0; set $@debug,0; if(select("- ReLoad:- Nevermind") == 2) end; if(select("- Debug: Without Debug") == 1) set $@debug,1; set .@re_in,1; goto OnInit; end; } That's my way to bug hunt and it worked always so far o.o. .@re_in is for to prevent "attachrid" error when the server really (re)start . Here is my whole script if you want, but it's with commented part.... //===== eAthena Script ======================================= //= Arena Master //===== By =================================================== //= lllchrislll //===== Version ============================================== //= 1.0 - Script Made //===== Compatible With ====================================== //= Every eAthena Version [sql] //===== Description ========================================== //= PvP / GvG & MvP Arena which also handles an ranking to it. //= PvP Types: // - Normal // - Dispell: You'll be dispelled on Room entry. // - Deathmatch: You'll be auto resurrect when you die. // If you type @die or similar, you'll be warped to your save point. // - Party PvP: 2vs2, 3vs3, 4vs4, 5vs5 //= PvP: // - There are 5 Rooms: Prontera, Alberta, Izlude, Morroc // PvP Types: Normal - Deathmatch has one of these. // That means 5*3. // - Party PvP: There are 4 types and those also has one of room each. // > So 5*4. // ----------------------------------------------- // = Total 35 Rooms !!!! // ----------------------------------------------- //= GvG: 5 Arenas, the default guild_vs1 - guild_vs5. //= MvP: For the MvP Part I'm using the scripts in npc/custom/MVP_arena/ // Enable both in npc/scripts_custom.conf // You can disable the warper of it or let it be as it is. //===== Comments & Credits ============================================= //= Credits: // - MvP Arena: Darkchild, massdriller, Silent //===== MySQL Entries ======================================== /* DROP TABLE IF EXISTS `arena_master`; CREATE TABLE `arena_master` ( `char_id` int(10) unsigned NOT NULL, `kills` smallint(5) unsigned DEFAULT '0', `death` smallint(5) unsigned DEFAULT '0', `hscore` smallint(5) unsigned DEFAULT '0', `killer` smallint(5) unsigned DEFAULT '0', `domi` smallint(5) unsigned DEFAULT '0', `mega` smallint(5) unsigned DEFAULT '0', `ridic` smallint(5) unsigned DEFAULT '0', `unstopp` smallint(5) unsigned DEFAULT '0', `holys` smallint(5) unsigned DEFAULT '0', `horren` smallint(5) unsigned DEFAULT '0', `godlike` smallint(5) unsigned DEFAULT '0', `mvp` smallint(5) unsigned DEFAULT '0', PRIMARY KEY (`char_id`) ) ENGINE=MyISAM; */ //============================================================ prontera,142,168,0 script Arena Master 808,{ set .@n$,"["+strnpcinfo(1)+"]"; function getPartyMapUsers; mes .@n$; mes "How can I help you?"; next; menu "- I wanna fight!!",-,"- See Rankings",R_Rank,"- Nevermind",R_Bye; mes .@n$; mes "Which room do you want?"; next; switch(select("- GvG:- PvP:- MvP:- Nevermind")) { case 1: mes .@n$; if(!getcharid(2)) { mes "I'm sorry, but you are not in a guild."; close; } mes "Please choose the room you want to join:"; mes "Each arena can hold up to "+$@mgvg+" player(s)."; if($@same_gld) mes "If guilds already are in this room, you have to be a member of it so that you can join."; next; set .@rchoi,select("- GvG 1 ["+getmapusers($@gvgr$[0])+"]:- GvG 2 ["+getmapusers($@gvgr$[1])+"]:- GvG 3 ["+getmapusers($@gvgr$[2])+"]:- GvG 4 ["+getmapusers($@gvgr$[3])+"]:- GvG 5 ["+getmapusers($@gvgr$[4])+"]") - 1; set @gvgc,@menu; mes .@n$; if($@same_gld) { if(getd("$@gvg_"+@gvgc+"_gld_1") == 0) { mes "I will warp you now."; close2; warp $@gvgr$[.@rchoi],$@gvg_gld1_x[.@rchoi],$@gvg_gld1_y[.@rchoi]; setd("$@gvg_"+@gvgc+"_gld_1"),getcharid(2); setd("$@gvg_"+@gvgc+"_1_ppl"),getd("$@gvg_"+@gvgc+"_1_ppl") + 1; end; } else if(getd("$@gvg_"+@gvgc+"_gld_2") == 0) { mes "I will warp you now."; close2; warp $@gvgr$[.@rchoi],$@gvg_gld2_x[.@rchoi],$@gvg_gld2_x[.@rchoi]; setd("$@gvg_"+@gvgc+"_gld_2"),getcharid(2); setd("$@gvg_"+@gvgc+"_2_ppl"),getd("$@gvg_"+@gvgc+"_2_ppl") + 1; end; } if(getd("$@gvg_"+@gvgc+"_gld_1") == getcharid(2)) { if(getd("$@gvg_"+@gvgc+"_1_ppl") >= $@mpgld) { mes "I'm sorry, but your guild's side is already full."; close; } mes "I will warp you now."; close2; warp $@gvgr$[.@rchoi],$@gvg_gld1_x[.@rchoi],$@gvg_gld1_y[.@rchoi]; setd("$@gvg_"+@gvgc+"_1_ppl"),getd("$@gvg_"+@gvgc+"_1_ppl") + 1; end; } else if(getd("$@gvg_"+@gvgc+"_gld_2") == getcharid(2)) { if(getd("$@gvg_"+@gvgc+"_2_ppl") >= $@mpgld) { mes "I'm sorry, but your guild's side is already full."; close; } mes "I will warp you now."; close2; warp $@gvgr$[.@rchoi],$@gvg_gld2_x[.@rchoi],$@gvg_gld2_x[.@rchoi]; setd("$@gvg_"+@gvgc+"_2_ppl"),getd("$@gvg_"+@gvgc+"_2_ppl") + 1; end; } } else { if(getmapusers($@gvgr$[.@rchoi]) >= $@mgvg) { mes "I'm sorry, but this Arena is already full."; close; } mes "I will warp you now."; close2; warp $@gvgr$[.@rchoi],0,0; end; } break; case 2: set @map,select("- Prontera:- Alberta:- Izlude:- Payon:- Morroc") - 1; mes .@n$; mes "Please choose the PvP Type:"; mes "Each arena can hold up to "+$@mpvp+" player(s)."; mes "Party PvP is different of course."; next; switch(select("- PvP (Dispell) ["+getmapusers($@disppvp$[@map])+"]:- Normal PvP ["+getmapusers($@npvp$[@map])+"]:- PvP Deathmatch["+getmapusers($@dmpvp$[@map])+"]:- Party PvP["+getPartyMapUsers(6)+"]")) { case 1: mes .@n$; if(getmapusers($@disppvp$[@map]) >= $@mpvp) { mes "I'm sorry, but this room is already full."; close; } mes "I'll warp you now to the "+ $@room$[@map]+" PvP Room, also remove all your buffs."; close2; sc_end SC_ALL; warp $@disppvp$[@map],0,0; end; case 2: mes .@n$; if(getmapusers($@npvp$[@map]) >= $@mpvp) { mes "I'm sorry, but this room is already full."; close; } mes "I'll warp you now to the "+ $@room$[@map]+" PvP Room."; close2; warp $@npvp$[@map],0,0; end; case 3: mes .@n$; if(getmapusers($@dmpvp$[@map]) >= $@mpvp) { mes "I'm sorry, but this room is already full."; close; } mes "I'll warp you now to the "+ $@room$[@map]+" PvP Deathmatch Room."; close2; warp $@dmpvp$[@map],0,0; end; case 4: mes .@n$; if(!getcharid(1)) { mes "I'm sorry, but you are not in a party."; mes "Please come back as soon you have found one."; close; } mes "Please choose the Party vs Party Mode:"; next; set .@pt,select("- 2vs2:- 3vs3:- 4vs4:- 5vs5") + 1; mes .@n$; if(getPartyMapUsers(.@pt,@map) >= (.@pt*.@pt)) { mes "I'm sorry, but this "+.@pt+"vs"+.@pt+" Arena is already full."; mes "Please try another."; close; } set @pty_id,getcharid(1); if(getpartyleader(@pty_id) != strcharinfo(0)) { mes "I'm sorry, but only your leader can register your party."; close; } getpartymember(@pty_id,1); set @ptymem,$@partymembercount; if(@ptymem != .@pt) { mes "I'm sorry, but you have not the required amount of members in your party."; mes "Please make sure that you have exact "+.@pt+" members, not more not less."; close; } getpartymember(@pty_id,2); copyarray @ptymemid[0],$@partymembercid,@ptymem; copyarray @ptymemaid[0],$@partymemberaid,@ptymem; set .@pt_ct,0; for ( set .@pm,0; .@pm < @ptymem; set .@pm,.@pm + 1) if(isloggedin(@ptymemid[.@pm],@ptymemaid[.@pm]) == 0) set .@pt_ct,.@pt_ct + 1; if(.@pt_ct) { mes "It seems like that members are offline."; mes "Please kick them and gather new members."; close; } mes "I'll warp your party now."; mes "Good luck."; close2; warpparty getd("$@pt"+.@pt+"pvp$["+@map+"]"),0,0,@pty_id; end; } case 3: mes .@n$; mes "I will now warp you to the MvP Master."; mes "There you can choose 4 Arena Types with each 8 seperate rooms."; close2; warp "quiz_00",50,24; end; case 4: goto R_Bye; break; } function getPartyMapUsers { // Total Map Users of the Party PvP Maps if(getarg(0) == 6) { set @pt2play,getmapusers($@pt2pvp$[0]) + getmapusers($@pt2pvp$[1]) + getmapusers($@pt2pvp$[2]) + getmapusers($@pt2pvp$[3]) + getmapusers($@pt2pvp$[4]); set @pt3play,getmapusers($@pt3pvp$[0]) + getmapusers($@pt3pvp$[1]) + getmapusers($@pt3pvp$[2]) + getmapusers($@pt3pvp$[3]) + getmapusers($@pt3pvp$[4]); set @pt4play,getmapusers($@pt4pvp$[0]) + getmapusers($@pt4pvp$[1]) + getmapusers($@pt4pvp$[2]) + getmapusers($@pt4pvp$[3]) + getmapusers($@pt4pvp$[4]); set @pt5play,getmapusers($@pt5pvp$[0]) + getmapusers($@pt5pvp$[1]) + getmapusers($@pt5pvp$[2]) + getmapusers($@pt5pvp$[3]) + getmapusers($@pt5pvp$[4]); return @pt2play + @pt3play + @pt4play + @pt5play; } else return getmapusers(getd("$@pt"+getarg(0)+"pvp$["+getarg(1)+"]")); } R_Rank: mes .@n$; mes "Which ranking do you wanna see?"; next; switch(select("- Kill:- Death:- High Score:- Killing Sphree:- Dominating:- Mega Kill:- Ridiculous:- Unstoppable:- Holy Shit:- Horrendous:- GodLike:- MvP")) { case 1: set .@listr$,"kill"; break; case 2: set .@listr$,"death"; break; case 3: set .@listr$,"hscore"; break; case 4: set .@listr$,"killer"; break; case 5: set .@listr$,"domi"; break; case 6: set .@listr$,"mega"; break; case 7: set .@listr$,"ridic"; break; case 8: set .@listr$,"unstopp"; break; case 9: set .@listr$,"holys"; break; case 10: set .@listr$,"horren"; break; case 11: set .@listr$,"godlike"; break; case 12: set .@listr$,"mvp"; break; } set @rank,@menu; mes .@n$; mes "Which list do you want to see?"; next; switch(select("- Top 5:- Top 10:- Top 15:- Top 20:- Top 25:- Top 30:- Nevermind")) { default: set .@limit,5*@menu; break; case 7: goto R_Bye; break; } mes .@n$; mes "Ranking:"; switch(@rank) { case 1: mes set(.@rankn$,"Top "+.@limit+" Killers"); set .@rankt$,"Kills"; break; case 2: mes set(.@rankn$,"Top "+.@limit+" Victims"); set .@rankt$,"Deaths"; break; case 3: mes set(.@rankn$,"Top "+.@limit+" High Scores"); set .@rankt$,"High Score"; break; default: mes set(.@rankn$,"Top "+.@limit+" "+$@sphree$[@rank-3]); set .@rankt$,$@sphree$[@rank-3]; break; } mes "Correct?"; next; if(select("- Yes:- No") == 2) goto R_Bye; mes .@n$; mes "I will now list the ranking in your Chat Box."; close2; dispbottom "======= "+.@rankn$+" ==========="; dispbottom "Player Name: "+.@rankt$; query_sql "SELECT `char_id` , `"+.@listr+"` FROM `arena_master` WHERE `"+.@listr+"` > 0 ORDER BY `"+.@listr+"` ASC LIMIT "+.@limit,.@ch_id,.@sh_r; if(!.@sh_r) { dispbottom "No Player found."; end; } for( set .@r,0; .@r < getarraysize(.@sh_r); set .@r,.@r + 1) { query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+.@ch_id[.@r]+"'",.@ch_na$; dispbottom .@ch_na$+": "+.@sh_r[.@r]; } end; R_Bye: mes .@n$; mes "Okay, see ya."; close; } - script PvPGvGMain -1,{ end; OnInit: if($@debug) announce "====== Arena Master - Debug initiate... ========",bc_self; // ============ GvG Settings ============// setarray $@gvgr$[0],"guild_vs1","guild_vs2","guild_vs3","guild_vs4","guild_vs5"; if($@debug) announce "Guild Maps loaded: "+$@gvgr$[0],bc_self; // If you want to add more mapflags, add them before the "10" > mf_gvg_noparty setarray $@gvg_mf[0],0,1,/*2,*/3,4,5,9,11,13,15,22,33,34,35,38,41,44,10; if($@debug) announce "Guild Mapflags loaded: "+getarraysize($@gvg_mf),bc_self; setarray $@gvg_gld1_x1[0],9,9,12,8,18; setarray $@gvg_gld1_y1[0],50,50,51,49,50; setarray $@gvg_gld1_x2[0],50,50,50,50,49; setarray $@gvg_gld1_y2[0],7,7,13,8,23; setarray $@gvg_gld2_x1[0],50,50,49,50,49; setarray $@gvg_gld2_y1[0],91,91,86,91,76; setarray $@gvg_gld2_x2[0],92,92,86,91,79; setarray $@gvg_gld2_y2[0],50,50,51,49,49; if($@debug) announce "Guild 1 Map Coordinates 1 loaded: X - "+getarraysize($@gvg_gld1_x1) +" & Y - "+getarraysize($@gvg_gld1_y1),bc_self; if($@debug) announce "Guild 1 Map Coordinates 2 loaded: X - "+getarraysize($@gvg_gld1_x2) +" & Y - "+getarraysize($@gvg_gld1_y2),bc_self; if($@debug) announce "Guild 2 Map Coordinates 1 loaded: X - "+getarraysize($@gvg_gld2_x1) +" & Y - "+getarraysize($@gvg_gld2_y1),bc_self; if($@debug) announce "Guild 2 Map Coordinates 2 loaded: X - "+getarraysize($@gvg_gld2_x2) +" & Y - "+getarraysize($@gvg_gld2_y2),bc_self; set $@same_gld,1; // Have to be same guild to be able to join? if($@debug) announce "Same Guild Requirement loaded: "+$@same_gld,bc_self; set $@mpgld,20; //Max Guild Members per Guild if($@debug) announce "Max Members per Guild loaded: "+$@mpgld,bc_self; set $@mgvg,$@mpgld*2; // Total Members per Arena. if($@debug) announce "Max Members per Arena loaded: "+$@mgvg,bc_self; // ======= Auto Mapflag Adding ===============// for ( set .@m,0; .@m < getarraysize($@gvgr$); set .@m,.@m + 1 ) { if($@debug) announce "Array Reading of GvG Maps complete",bc_self; if($@debug) announce "Mapflag set at "+$@gvgr$[.@m] + " initiate...",bc_self; // Use this if you disallows parties // for ( set .@mf,0; .@mf < getarraysize($@gvg_mf); set .@mf,.@mf + 1 ) { // Use this if you allow parties for ( set .@mf,0; .@mf < (getarraysize($@gvg_mf) - 1); set .@mf,.@mf + 1 ) { /* if($@gvg_mf[.@mf] == 2) { if($@debug) announce "Mapflag 2 (mf_nosave) initiate...",bc_self; if(getmapflag($@gvgr$[.@m],mf_nosave) == 0) setmapflagnosave $@gvgr$[.@m],"prontera",156,191; if($@debug) announce "Mapflag 2 (mf_nosave) completed...",bc_self; continue; } else */ if(getmapflag($@gvgr$[.@m],$@gvg_mf[.@mf]) == 0) setmapflag $@gvgr$[.@m],$@gvg_mf[.@mf]; if($@debug) announce "Mapflag "+ $@gvg_mf[.@mf] +" set at "+$@gvgr$[.@m] + " complete",bc_self; } } if($@debug) announce "Guild Mapflag loading completed",bc_self; // ============ PvP Settings ============// // If you want to add more mapflags, add them before the "7" > mf_pvp_noparty setarray $@pvp_mf[0],0,1,2,3,4,5,7,11,13,22,33,34,35,38,41,44,7; if($@debug) announce "PvP Mapflags loaded: "+getarraysize($@pvp_mf),bc_self; set $@mpvp,50; // Max Player each Arena. setarray $@sphree$[0],"Killing Sphree","Dominating","Mega Kill","Ridiculous","Unstoppable","Holy Shit","Horrendous","GodLike"; if($@debug) announce "PvP Sphree Names loaded: "+$@sphree$[0],bc_self; // Map Order: Prontera, Alberta, Izlude, Payon, Morroc setarray $@room$[0],"Prontera","Alberta","Izlude","Payon","Morroc"; if($@debug) announce "PvP Town Maps loaded: "+$@room$[0],bc_self; // Dispell PvP setarray $@disppvp$[0],"pvp_y_1-1","pvp_y_1-4","pvp_y_1-2","pvp_y_1-3","pvp_y_1-5"; if($@debug) announce "PvP Dispell Maps loaded: "+$@disppvp$[0],bc_self; // ======= Auto Mapflag Adding - Dispell PvP ===============// for ( set .@m,0; .@m < getarraysize($@disppvp$); set .@m,.@m + 1 ) // Use this if you disallows parties // for ( set .@mf,0; .@mf < getarraysize($@pvp_mf); set .@mf,.@mf + 1 ) // Use this if you allow parties for ( set .@mf,0; .@mf < (getarraysize($@pvp_mf) - 1); set .@mf,.@mf + 1 ) if(getmapflag($@disppvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@disppvp$[.@m],$@pvp_mf[.@mf]; if($@debug) announce "PvP Dispell Mapflags loaded.",bc_self; // Normal PvP setarray $@npvp$[0],"pvp_y_2-1","pvp_y_2-4","pvp_y_2-2","pvp_y_2-3","pvp_y_2-5"; if($@debug) announce "PvP Normal Maps loaded: "+$@npvp$[0],bc_self; // ======= Auto Mapflag Adding - Normal PvP ===============// for ( set .@m,0; .@m < getarraysize($@npvp$); set .@m,.@m + 1 ) // Use this if you disallows parties // for ( set .@mf,0; .@mf < getarraysize($@pvp_mf); set .@mf,.@mf + 1 ) // Use this if you allow parties for ( set .@mf,0; .@mf < (getarraysize($@pvp_mf) - 1); set .@mf,.@mf + 1 ) if(getmapflag($@npvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@npvp$[.@m],$@pvp_mf[.@mf]; if($@debug) announce "PvP Normal Mapflags loaded.",bc_self; // ================== Deathmatch Settings + Maps ================ setarray $@dmpvp$[0],"pvp_y_3-1","pvp_y_3-4","pvp_y_3-2","pvp_y_3-3","pvp_y_3-5"; if($@debug) announce "PvP DM Maps loaded: "+$@dmpvp$[0],bc_self; // ======= Auto Mapflag Adding - DM PvP ===============// for ( set .@m,0; .@m < getarraysize($@dmpvp$); set .@m,.@m + 1 ) // Use this if you disallows parties // for ( set .@mf,0; .@mf < getarraysize($@pvp_mf); set .@mf,.@mf + 1 ) // Use this if you allow parties for ( set .@mf,0; .@mf < (getarraysize($@pvp_mf) - 1); set .@mf,.@mf + 1 ) if(getmapflag($@dmpvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@dmpvp$[.@m],$@pvp_mf[.@mf]; if($@debug) announce "PvP DM Mapflags loaded.",bc_self; set $@killstart,5; // Kills required for Killing Sphree Start if($@debug) announce "Kill Requiremnt for Killing Sphree Start loaded.",bc_self; // ================= Party PvP Settings ================= // ========= 2vs2 Party PvP ==========// setarray $@pt2pvp$[0],"pvp_y_4-1","pvp_y_4-4","pvp_y_4-2","pvp_y_4-3","pvp_y_4-5"; if($@debug) announce "Party PvP 2vs2 Maps loaded: "+$@pt2pvp$[0],bc_self; // 3vs3 Party PvP setarray $@pt3pvp$[0],"pvp_y_5-1","pvp_y_5-4","pvp_y_5-2","pvp_y_5-3","pvp_y_5-5"; if($@debug) announce "Party PvP 3vs3 Maps loaded: "+$@pt3pvp$[0],bc_self; // 4vs4 Party PvP setarray $@pt4pvp$[0],"pvp_y_6-1","pvp_y_6-4","pvp_y_6-2","pvp_y_6-3","pvp_y_6-5"; if($@debug) announce "Party PvP 4vs4 Maps loaded: "+$@pt4pvp$[0],bc_self; // 5vs5 Party PvP setarray $@pt5pvp$[0],"pvp_y_7-1","pvp_y_7-4","pvp_y_7-2","pvp_y_7-3","pvp_y_7-5"; if($@debug) announce "Party PvP 5vs5 Maps loaded: "+$@pt5pvp$[0],bc_self; // ======= Auto Mapflag Adding ===============// for ( set .@m,0; .@m < getarraysize($@pt2pvp$); set .@m,.@m + 1 ) for ( set .@mf,0; .@mf < (getarraysize($@pvp_mf) - 1); set .@mf,.@mf + 1 ) { if(getmapflag($@pt2pvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@pt2pvp$[.@m],$@pvp_mf[.@mf]; if(getmapflag($@pt3pvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@pt3pvp$[.@m],$@pvp_mf[.@mf]; if(getmapflag($@pt4pvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@pt4pvp$[.@m],$@pvp_mf[.@mf]; if(getmapflag($@pt5pvp$[.@m],$@pvp_mf[.@mf]) == 0) setmapflag $@pt5pvp$[.@m],$@pvp_mf[.@mf]; } if($@debug) announce "Party PvP Mapflags loaded.",bc_self; function writeStats; if($@debug) announce "Write Stats Function loaded.",bc_self; end; OnPCKillEvent: if(compare(strcharinfo(3),"pvp_y_") == 0 || compare(strcharinfo(3),"guild_vs") == 0) end; if(getmapflag(strcharinfo(3),mf_pvp) == 0 || getmapflag(strcharinfo(3),mf_gvg) == 0) end; set .@k,getcharid(3); set .@v,killedrid; mapannounce strcharinfo(3),strcharinfo(0) + " has killed "+rid2name(.@v)+".",0; set @killct,@killct + 1; if(@killct >= $@killstart) { if(@killct < 10) { set @sphr,1; set @killer,@killer + 1; } else if(@killct >= 10 && @killct < 15) { set @sphr,2; set @domi,@domi + 1; } else if(@killct >= 15 && @killct < 20) { set @sphr,3; set @mega,@mega + 1; } else if(@killct >= 20 && @killct < 25) { set @sphr,4; set @ridic,@ridic + 1; } else if(@killct >= 25 && @killct < 30) { set @sphr,5; set @unstopp,@unstopp + 1; } else if(@killct >= 30 && @killct < 50) { set @sphr,6; set @holys,@holys + 1; } else if(@killct >= 50 && @killct < 80) { set @sphr,7; set @horren,@horren + 1; } else if(@killct >= 80) { set @sphr,8; set @godlike,@godlike + 1; } mapannounce strcharinfo(3),strcharinfo(0) + " is now on "+ $@sphree$[@sphr]+"!!!!",0; message strcharinfo(0),"You have killed "+@killct+" Player(s) so far."; } detachrid; attachrid(.@v); writeStats(getcharid(0),@killct); set @killct,0; if($@same_gld) { if(getd("$@gvg_"+@gvgc+"_gld_1") == getcharid(2)) setd("$@gvg_"+@gvgc+"_1_ppl"),getd("$@gvg_"+@gvgc+"_1_ppl") - 1; if(getd("$@gvg_"+@gvgc+"_gld_2") == getcharid(2)) setd("$@gvg_"+@gvgc+"_2_ppl"),getd("$@gvg_"+@gvgc+"_2_ppl") - 1; } for ( set @d,0; @d < getarraysize($@dmpvp$); set @d,@d + 1) if(strcharinfo(3) == $@dmpvp$[@d]) { sleep2 1500; if(.@k != getcharid(3)) { warp strcharinfo(3),0,0; if(HP == 0) atcommand "@alive"; percentheal 100,100; } else warp "SavePoint",0,0; } end; OnPCLogOutEvent: if(compare(strcharinfo(3),"pvp_y_") == 0 || compare(strcharinfo(3),"guild_vs") == 0) end; if(getmapflag(strcharinfo(3),mf_pvp) == 0 || getmapflag(strcharinfo(3),mf_gvg) == 0) end; writeStats(getcharid(0),@killct); if($@same_gld) { if(getd("$@gvg_"+@gvgc+"_gld_1") == getcharid(2)) setd("$@gvg_"+@gvgc+"_1_ppl"),getd("$@gvg_"+@gvgc+"_1_ppl") - 1; if(getd("$@gvg_"+@gvgc+"_gld_2") == getcharid(2)) setd("$@gvg_"+@gvgc+"_2_ppl"),getd("$@gvg_"+@gvgc+"_2_ppl") - 1; } end; OnNPCKillEvent: if(compare(strcharinfo(3),"pvp_n_") == 0) end; if(query_sql("SELECT `char_id` FROM `arena_master` WHERE `char_id` = '"+@c+"'",@charid) != 0) query_sql "UPDATE `arena_master` SET `mvp` = `mvp` + 1 WHERE `char_id` = '"+@c+"'"; else query_sql "INSERT INTO `arena_master` ( `char_id` , `mvp`) VALUES ( '"+@c+"' , '1' )"; end; function writeStats { set @c,getarg(0); set @k,getarg(1); if(query_sql("SELECT `char_id` FROM `arena_master` WHERE `char_id` = '"+@c+"'",@charid) != 0) { if(@k > query_sql("SELECT `hscore` FROM `arena_master` WHERE `char_id` = '"+@c+"'",@hscore)) set @hscore,@k; query_sql "UPDATE `arena_master` SET `kills` = `kills` + "+@k+", `death` = `death` + 1 , `hscore` = '"+@hscore+"' , `killer` = `killer` + "+@killer+" , `domi` = `domi` + "+@domi+" , `mega` = `mega` + "+@mega+" , `ridic` = `ridic` + "+@ridic+" , `unstopp` = `unstopp` + "+@unstopp+" , `holys` = `holys` + "+@holys+" , `horren` = `horren` + "+@horren+" , `godlike` = `godlike` + "+@godlike+" WHERE `char_id` = '"+@c+"'"; } else query_sql "INSERT INTO `arena_master` ( `char_id` , `kills` , `death` , `hscore` , `killer` , `domi` , `mega` , `ridic` , `unstopp` , `holys` , `horren` , `godlike` , `mvp`) VALUES ( '"+@c+"' , '"+@k+"' , '1' , '"+@hscore+"' , '"+@killer+"' , '"+@domi+"' , '"+@mega+"' , '"+@ridic+"' , '"+@unstopp+"' , '"+@holys+"' , '"+@horren+"' , '"+@godlike+"' , '0' )"; return; } OnWhisperGlobal: set .@re_in,0; set $@debug,0; if(select("- ReLoad:- Nevermind") == 2) end; if(select("- Debug: Without Debug") == 1) set $@debug,1; set .@re_in,1; goto OnInit; end; } Another question, see 'R_Rank:' : I saw you can insert table names like this too: query_sql "SELECT `char_id` , `"+.@listr+"` FROM `arena_master` WHERE `"+.@listr+"` > 0 ORDER BY `"+.@listr+"` ASC LIMIT "+.@limit,.@ch_id,.@sh_r; Couldn't test it yet though :I. Wanna fix my mf_ errors first :I. Thanks Kenpachi for in advance . Regards, Chris
  6. * bump * (wanted to that too D: at least once) Can no one help me? My SVN is eAthena SQL 14484 Trunk (Test Server, so I don't need always the newest svn o.o)
  7. If you explain it like that it's logic ...., my stupid brain didn't wanted to think logically o.o. Thanks for the info Brian . Regards, Chris
  8. .... I just re-read your 1st post, seems like I skipped this line somehow: Sry about an guide which wasn't needed at all o.o. @Topic I think that would require SRC Modification ^^, since it's a new item type or not? Regards, Chris
  9. Just one thing about the Questlog System o.o, I thought that only the ID which are added in the db/quest_db.txt can be used... I mean JeffShadow90 uses "if(checkquest(abbey02)" etc, does that also work o.o? Regards, Chris
  10. 1.PVP Master Ultimate 1.3.0 > Script Itself 2,Tables > If you want Portugese (sry if wrongly written Q-Q) 3.Tables[Lang] > If you want english type 4.Unreal Tournament Sounds (mediafire) > If you want to download from mediafire.com 5.Unreal Yournament Sounds (SVN Link) > If you want to download from SVN 6.Alternative Download [scripts] > File Colletion at Google Code 7.PVP Master Ultimate.sql (found in either "Alternative Download", or SVN. Since you made it work already, it's just a small explanation I guess But I can't help you with your SQL problem, the error says the you misconfigured the connetion for the user "controluser", but since the other .sql file did work I dunno what's wrong. (To be honest I lmfao hard o.o') Regards, Chris
  11. Other way would be the usage of *getmapxy >_<, but checking all registered members is definatly a huge work to do D:. Well creating an variable to check the announced word and when the *getmapxy of the players are different afterwards then something happens. I can't do that since I'm working on an problem of my script though >_<, sry. Regards, Chris
  12. worst than this ? >.< LOL this is mine... but today kinda amazing..since it can reach above 1Mb/s usually just around 0.30 Mb/s..... You know that his was around 50kb/s? o.o Take a look at post #3
  13. You're welcome . Good that I was able to help ^^. Regards, Chris
  14. Update: Deleted the script samples to prevent the usage of them. (security first D:) Also close please . ------------------------------------------------------------------------------------------------------------ Hi guys, I got a few problems with the following two mapflags: mf_nosave & mf_noexppenalty I'm trying to make an PvP/GvG/MvP Arena with included ranking system. I though about the mapflags and since I saw in an script I could that via their numbers and an array, I did it that way. My only problem is that it doesn't work with those two mf_ above. I dunno why though. Here are screenshots, InGame Debug Messages & Map Server console. InGame - Here I skipped the mf_nosave but it stopped at the second one. Map Server Error: Uploaded with ImageShack.us Regards, Chris
  15. Hmm I still couldn't connect until I tested to add "index.php" after the URL and it worked, when I let "http://rathena.org/board/" then I get the usual I only though of that while I tried Wiki out , and saw it worked so, I tried that^^. Good luck for finding a new host though . Regards, Chris
  16. Here.... -<TAB>script<TAB>hourlypoints<TAB>-1,{ //--Start of the Script OnPCLoginEvent: attachnpctimer ""+strcharinfo(0)+""; initnpctimer; end; OnTimer30000: //Check if Vending (normal or @at) if(checkvending() >= 1 || checkchatting() == 1) { dispbottom "The hourly points event stopped because you were vending / chatting. Please relog if you wish to start again."; stopnpctimer; end; } //Check if Idle getmapxy( .@map$, .@x, .@y, 0 ); if(@map$ == .@map$ && @x == .@x && @y == .@y) { set @afk, @afk + 1; } //If move timer resets else { set @afk, 0; } set @map$, .@map$; set @x, .@x; set @y, .@y; //Idle Check for 5 Minutes if(@afk == 5) { dispbottom "The hourly points event stopped because you were idle for 5 minutes. Please relog if you wish to start again."; stopnpctimer; end; } end; OnTimer60000: set @minute, @minute + 1; //Check for 1 Minute if(@minute == 60){ set @minute,0; set .@point_amt, 10; //Points to get every hour (default: 10) getitem 7179,.@point_amt; dispbottom "You received "+.@point_amt+" Proof of Donationby staying ingame for 1 hour"; dispbottom "Current Balance = "+countitem(7179)+" Proof of Donation"; set @consecutive_hour, @consecutive_hour + 1; } //Check for 12 hours consecutive if(@consecutive_hour == 12) { set @consecutive_hour,0; set .@cpoint_amt, 50; //Points to get for 12 Consecutive hours (default: 50) getitem 7179,.@cpoint_amt; dispbottom "You receive "+.@cpoint_amt+" Proof of Donation in playing for 12 consecutive hours"; dispbottom "Current Balance = "+countitem(7179)+" Proof of Donation"; } stopnpctimer; initnpctimer; end; } //--End of the Script
  17. Holy S***, well an friend of mine loads with 5MBit/sec o.o, I load with 600-700kb/s :I.
  18. Yeah, I saw that too, but didn't remember at that time >_>. Anyway first here is a proof that it works. Uploaded with ImageShack.us Then the script itself = 93 Lines //##################################################################### //# # //# ##### # ######## # # ##### ## # # # //# # ### ## # # # # # # ### # //# #### # # ## ###### #### # # # # # # //# # ####### ## # # # # # # ####### # //# ##### # # ## # # ##### # ## # # # //# # //##################################################################### // // //=========== Script for eathena Users ====================// //MVP Arena made by Rikimaru on rathena.org ==============// //=========================================================// //======== Description ====================================// //== Easy made MVP Arena with all MVP's except the new ====// //== Renewal MVP's. Do not remove the Credits =============// //== Price to spawn 1 MVP is 50.000.000 Zenny =============// //== Price for Thanatos or LHZ MVP's is 250.000.000 Zenny =// //== Do not Remove theese Credits =========================// //================= Version : =============================// //============= V. 1.0 Bug Fixes by Rikimaru ==============// //============= V. 1.1 Shorted by llchrisll //=========== Credits End =================================// // // //===================== Script of the MVP Warper ==========// prontera,142,168,5 script MVP Warper 101,{ mes "[ MVP Warper ]"; mes "I can warp you to the MVP Room,do you want to go there?"; next; switch(select("Yes!:No!")) { case 1: mes "[ MVP Warper ]"; mes "Okay I'm going to warp you."; warp "guild_vs1",50,50; close; case 2: mes "[ MVP Warper ]"; mes "Okay bye!"; close; } } //========================= First Script End =============// //================== MVP Summoner ========================// guild_vs1,50,57,5 script MVP Summoner 790,{ mes "[ MVP Summoner ]"; mes "Hello,I'm able to spawn MVP's."; mes "Which MVP do you want me to spawn?"; mes "1 MVP costs "+.zeny[1]+" Zeny"; mes "LHZ MVPs and Thanatos have a"; mes "cost of "+.zeny[2]+" Zeny."; next; set .@m,select(.smenu$) - 1; mes "[ MVP Summoner ]"; mes "Okay let me check if you have enough Zeny."; if( Zeny < .zeny[.mobze[.@m]] ) { mes "You don't have enough money"; close; } else { close2; set Zeny, Zeny - .zeny[.mobze[.@m]]; atcommand "@spawn "+.mobid[.@m] + " "+.mobam[.@m]; npctalk "[ MVP Summoner]: "+getmonsterinfo(.mobid[.@m],0) +" Spawned!"; end; } OnInit: setarray .zeny[1],50000000,250000000; // 50m,250m Zeny // Mob IDs setarray .mobid[0],1511,1647,1785,1630,1039,1874,1272,1719,1046,1389,1112,1115,1418,1871,1252,1768,1086,1885,1649,1651,1832,1492,1734,1251,1779,1688,1646,1373,1147,1059,1150,1087,1190,1038,1157,1159,1623,1650,1583,1708,1312,1751,1648,1658; // Mob Spawn Amount setarray .mobam[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; // Price: Entry as Index from .zeny // 1 = .zeny[1] - 2 = .zeny[2] setarray .mobze[0],1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,2,1,1,1,2,2; set .smenu$,""; for( set .@s,0; .@s < getarraysize(.mobid); set .@s,.@s + 1) { // Skips an Monster if it does not exist in the db if(getmonsterinfo(.mobid[.@s],0) == "" || getmonsterinfo(.mobid[.@s],0) == "null") continue; // else adding it to the menu set .smenu$,.smenu$ + "- "+getmonsterinfo(.mobid[.@s],0) + ( (.mobid[.@s+1] == 0)?"":":"); } end; } guild_vs1,31,68,5 duplicate(MVP Summoner) MVP Summoner#1 790 guild_vs1,31,31,5 duplicate(MVP Summoner) MVP Summoner#2 790 guild_vs1,68,31,5 duplicate(MVP Summoner) MVP Summoner#3 790 guild_vs1,68,68,5 duplicate(MVP Summoner) MVP Summoner#4 790 Added an changelog entry also Regards, Chris
  19. setarray .@test[0],1; The [0] stats the index where the array should be start to be written. An Index can holds up to 128 information, but the last Index is 127 since an array always starts with the index 0. To gain the arraysize, there is the command *getarraysize() also you need to know where the index starts. Example: I have an array which starts with the index 1: setarray .@boxid[1],512,513,514; Now I wanna know the array size: mes getarraysize(.@boxid); // To display it, I'm gonna use "mes" The next would be, if I wanna choose one of the information I have to create an menu. set .@boxm$,""; for (set .@m,0; .@m < getarraysize(.@boxid); set .@m,.@m + 1) set .@boxm$,.@boxm$ + "- "+.@boxid[.@m]+ ( (.@boxid==0)?"":":"); Then we'll have to open the menu. set .@s,select(.@boxm$); Since *select creates an "@" variables called "@menu" which contains the position I chose from the menu. I also saved it into a extra variable in case I would need the an other menu later, so I don't lose the number. If the array would start with an [0] I would have to do add a "- 1" after "(.@boxm$)", so it would like this: set .@s,select(.@boxm$) - 1; Now to confirm it, what I choose: mes "You have chosen: "+.@boxid[.@s]; mes "Is that correct?"; if(select("- Yes:- No") == 2) close; Like you saw I used another select, so the @menu has changed it's content. Then the npc ask us what to do next. mes "What do you want to now?"; if(select("- Edit:- Noting) == 2) close; Now he wants to know the new value for the array. mes "Please type the new value it should have:"; input @new; After I have give him the new value, now he needs to insert it into the array: setarray .@boxid[.@s],@new; So that ends my example. I hope I could be of help, since I'm not good at teaching others D: Regards, Chris
  20. @Off-Topic: My name contains 2 small L o.o each. @Topic: What is x1 ?
  21. Exchange this part: if(@minute == 60){ set @minute,0; set .@point_amt, 10; //Points to get every hour (default: 10) getitem 7179,.@point_amt; dispbottom "You received "+.@point_amt+" Proof of Donationby staying ingame for 1 hour"; dispbottom "Current Balance = "+countitem(7179)+" Proof of Donation"; set @consecutive_hour, @consecutive_hour + 1; } //Check for 12 hours consecutive if(@consecutive_hour == 12) { set @consecutive_hour,0; set .@cpoint_amt, 50; //Points to get for 12 Consecutive hours (default: 50) getitem 7179,.@cpoint_amt; dispbottom "You receive "+.@cpoint_amt+" Proof of Donation in playing for 12 consecutive hours"; dispbottom "Current Balance = "+countitem(7179)+" Proof of Donation"; } Regards, Chris
  22. Why do you create an new script command instead of using the atcommand @alive o.o?
  23. I nearly had to laugh at that, sorry o.o. The only scripts which were erroring me, were not tested scripts or when the SVN was newer then the script itself, like an outdated script syntax or like that. If you allow me to shorten the script I will give my best ^^. Regards, Chris Note: My own Summoner was like that too, but that was when I started scripting .
  24. for this there is the command checkvending() o.o Well for this to work you would need an array to check the players since it requires an character (obviously o.o), Regards, Chris
×
×
  • Create New...