-
Posts
9,746 -
Joined
-
Days Won
305
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Emistry
-
-
announce "Alon Event Employee: Well done. All the monster are dead!",bc_map;change to
mapannounce "pvp_n_7-5", "Alon Event Employee: Well done. All the monster are dead!", bc_map; -
check what you have added recently, missing client files, or spirte, or sound etc, could trigger the gravity error.
-
perhaps consider to use db/re/produce_db.txt ?
there are also other tricks like ....
1. sum all ingredient's item id, use that as an identifier to search which items to craft. (as long as the number you sum up doesn't repeat, everything should be fine)
2. or sort the numbers, then store into a variables and use it to compare the item list. (you probably need to write a sorting method)
etc
-
On 3/10/2022 at 4:46 PM, GM Winter said:
dont have any idea how to run a sql script im using sqlyog ultimate
a simple google search would have solved your questions.
https://sqlyogkb.webyog.com/article/46-executing-sql-queries
https://sqlyogkb.webyog.com/article/117-execute-sql-script
On 3/10/2022 at 4:46 PM, GM Winter said:no bank tables
it stored as account variable, so its the acc_reg_num table.
-
1
-
-
CopyFlags: Skill: Plagiarism: trueadd to each transclass skills
-
if (checkweight(969,gold) == 0) goto L_OverWeight; getitem 969, gold;x set gold, 0;change to
input [email protected], 0, gold; if ([email protected]) close; if (checkweight(969,[email protected]) == 0) goto L_OverWeight; gold -= [email protected]; getitem 969, [email protected];-
1
-
-
you are probably connected to a wrong database, or you setup new database in a wrong server.
-
shutdown the server and run the SQL script.
UPDATE `char` SET `zeny` = 0; UPDATE `mail` SET `zeny` = 0; UPDATE `acc_reg_num` SET `value` = 0 WHERE `key` LIKE '#BANKVAULT'; -
your value shouldn't exceed
NPC_RANGE3_ENDJT_NEW_NPC_3RD_END = 19999, JT_gprecruit = 20100, NPC_RANGE3_END, // Officia: JT_NEW_NPC_3RD_END=20101now you have set the NPC ID at 20100, and you have 100 free slot in front to cater official server adding more NPC in future.
its not recommend to jump to a high number since it wasting your server memory
or ... just adjust this if you are confident.
//Checks if a given id is a valid npc id. [Skotlex] //Since new npcs are added all the time, the max valid value is the one before the first mob (Scorpion = 1001) #define npcdb_checkid(id) ( ( (id) > NPC_RANGE1_START && (id) < NPC_RANGE1_END ) || (id) == JT_HIDDEN_WARP_NPC || ( (id) > NPC_RANGE2_START && (id) < NPC_RANGE2_END ) || (id) == JT_INVISIBLE || ( (id) > NPC_RANGE3_START && (id) < NPC_RANGE3_END ) || ( (id) >= 30000 && (id) <= 31000))then you can use id between 30000 ~ 31000.
-
On 3/8/2022 at 12:39 PM, NoWayHome said:
https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif
replace with your own image button, or go Paypal generate a new Buy Now codes instead?
-
you can also try something like this.
- script atcmd_example -1,{ OnInit: bindatcmd "start", strnpcinfo(3) + "::OnAtcommand", 99; end; OnAtcommand: if (.running) { dispbottom "event currently running at '"+.map$+"' by '"+.gm_name$+"'."; end; } [email protected] = getmapusers(strcharinfo(3)); if ([email protected] < 0) { dispbottom "invalid map '"+.map$+"', event stopped."; } else if ([email protected] <= 2) { dispbottom "this map lack of user to start event, required at least another 2 users (excluding yourself)."; } else { deletearray .player_aid_pool; .player_aid_pool_size = 0; .running = 1; .current_round = 0; .map$ = strcharinfo(3); .gm_name$ = strcharinfo(0); initnpctimer; dispbottom "event started at '"+.map$+"' by '"+.gm_name$+"'. "; mapannounce .map$, "event started at '"+.map$+"' by '"+.gm_name$+"'.", bc_all; if (getmapflag(.map$, MF_LOADEVENT)) setmapflag(.map$, MF_LOADEVENT); mapwarp .map$, .map$, 0, 0; } end; OnPCLoadMapEvent: if (.running && !getgmlevel()) { .player_aid_pool[.player_aid_pool_size] = getcharid(3); .player_aid_pool_size++; dispbottom "You are registered as "+.player_aid_pool_size+"th in this event."; } end; OnTimer10000: if (!.running) { stopnpctimer; end; } .current_round++; if (.player_aid_pool_size <= 0) { mapannounce .map$, "Round "+.current_round+": no more player, event stopped...", bc_map; donpcevent strnpcinfo(3)+"::OnStop"; } else if (.player_aid_pool_size <= 1) { mapannounce .map$, "Round "+.current_round+": we have a winner "[email protected]_name$+"!", bc_map; donpcevent strnpcinfo(3)+"::OnStop"; } else { [email protected] = rand(.player_aid_pool_size); mapannounce .map$, "Round "+.current_round+": we killed "+rid2name(.player_aid_pool[[email protected]])+" out of "+.player_aid_pool_size+" players in this map.", bc_map; unitkill .player_aid_pool[[email protected]]; specialeffect2 EF_GROUND_EXPLOSION, AREA, [email protected]_name$[[email protected]]; initnpctimer; deletearray .player_aid_pool[[email protected]], 1; .player_aid_pool_size--; } end; OnStop: stopnpctimer; .running = 0; .current_round = 0; .map$ = ""; .gm_name$ = ""; deletearray .player_aid_pool; .player_aid_pool_size = 0; if (getmapflag(.map$, MF_LOADEVENT)) removemapflag(.map$, MF_LOADEVENT); end: }-
1
-
-
a simplified version.
- script gm_is_online -1,{ OnPCLoginEvent: [email protected]_level = getgmlevel(); if ([email protected]_level == 99) callsub(L_GM, "Admin"); else if ([email protected]_level >= 90) callsub(L_GM, "Co-Admin"); else if ([email protected]_level >= 10) callsub(L_GM, "Head GM"); else if ([email protected]_level >= 4) callsub(L_GM, "Event GM"); else if ([email protected]_level >= 3) callsub(L_GM, "Support GM"); else if ([email protected]_level >= 2) callsub(L_GM, "Helper GM"); if (readparam(bStr) > 99 || readparam(bAgi) > 99 || readparam(bVit) > 99 || readparam(bInt) > 99 || readparam(Dex) > 99 || readparam(bLuk) > 99){ mes "[^FF0000Anti Cheat System^000000]"; mes "We have detected you having stats over the limit. You will be disconnected shortly. If this is an error please contact the Game Master immediately."; setpcblock PCBLOCK_ALL, true; close2; atcommand "@kick "+strcharinfo(0); end; } end; L_GM: atcommand "@speed 1"; announce "[ "+getarg(0)+" ] "+strcharinfo(0)+" is online",bc_all,0x00ff66; specialeffect2 377; specialeffect2 381; end; } -
use delitemidx(...) script command instead.
getinventorylist; for ([email protected] = 0; [email protected] < @inventorylist_count; [email protected]++) { if (@inventorylist_id[[email protected]] == 31000 && [email protected]_equip[[email protected]]) { delitemidx @inventorylist_idx[[email protected]], 1; getitem 30001,5; } } -
- script sample -1,{ OnInit: setarray .map$, "prontera", "izlude"; .map_size = getarraysize(.map$); end; OnHour00: for ([email protected] = 0; [email protected] < .map_size; [email protected]++) { [email protected] = instance_list(.map$[[email protected]]); for ([email protected] = 0; [email protected] < [email protected]; [email protected]++) { instance_announce [email protected]_list[[email protected]], "<SYSTEM> Instance are destroyed upon reached 12AM everyday.", bc_map; instance_destroy [email protected]_list[[email protected]]); } } end; }
required the Pull: 5112 mentioned above.
-
1
-
-
perhaps you should check what kind of items you are trying to loot using the autoloot.
autoloot only cover items that dropped by monsters, it exclude item that is generated by npc script or certain npc event etc.
-
something like this
- script atcmd_example -1,{ OnInit: bindatcmd "start", strnpcinfo(3) + "::OnAtcommand", 99; end; OnAtcommand: if (.running) { dispbottom "event currently running at '"+.map$+"' by '"+.gm_name$+"'."; end; } [email protected] = getmapusers(strcharinfo(3)); if ([email protected] < 0) { dispbottom "invalid map '"+.map$+"', event stopped."; } else if ([email protected] <= 2) { dispbottom "this map lack of user to start event, required at least another 2 users (excluding yourself)."; } else { .running = 1; .current_round = 0; .map$ = strcharinfo(3); .gm_name$ = strcharinfo(0); initnpctimer; dispbottom "event started at '"+.map$+"' by '"+.gm_name$+"'."; mapannounce .map$, "event started at '"+.map$+"' by '"+.gm_name$+"'.", bc_map; } end; OnTimer10000: if (!.running) { stopnpctimer; end; } [email protected]_count = getmapunits(BL_PC, .map$, [email protected]_name$); [email protected]_index = inarray([email protected]_name$, .gm_name$); if ([email protected]_index != -1) { // offset GM himself deletearray [email protected]_name$[[email protected]], 1; [email protected]_count--; } .current_round++; if ([email protected]_count <= 0) { mapannounce .map$, "Round "+.current_round+": no more player, event stopped...", bc_map; donpcevent strnpcinfo(3)+"::OnStop"; } else if ([email protected]_count <= 1) { mapannounce .map$, "Round "+.current_round+": we have a winner "[email protected]_name$+"!", bc_map; donpcevent strnpcinfo(3)+"::OnStop"; } else { [email protected] = rand([email protected]_count); mapannounce .map$, "Round "+.current_round+": we killed "[email protected]_name$[[email protected]]+" out of "[email protected]_count+" players in this map.", bc_map; unitkill convertpcinfo([email protected]_name$[[email protected]], CPC_ACCOUNT); specialeffect2 EF_GROUND_EXPLOSION, AREA, [email protected]_name$[[email protected]]; initnpctimer; } end; OnStop: stopnpctimer; .running = 0; .current_round = 0; .map$ = ""; .gm_name$ = ""; end: }-
1
-
-
the parameter for getmapxy has been changed long ago.
https://github.com/rathena/rathena/commit/26720f041a3cd0edbaa975bfc70345a30e9bf706
change it into appropriate bl_type
-
1
-
-
you can also override the whole part here
with
item->value_sell = 1; item->value_buy = 2;buy price shouldn't be lower than sell price.
-
implement the cell_pvp source mod, then set the area to be PVP area.
Search the forum for cell_pvp source mod, probably you have to update it to be compatible with your hosted version.
-
On 9/16/2021 at 7:30 AM, Eross said:
How about making it up to max 5 mob id ???
- script atcmd_example -1,{ OnInit: .max_slot = 5; bindatcmd "killcount", strnpcinfo(3) + "::OnAtcommand"; end; OnAtcommand: if (compare([email protected]_parameters$[0], "reset")) { if ([email protected]_parameters$[1] == "all") { for ([email protected] = 0; [email protected] < .max_slot; [email protected]++) dispbottom [email protected]_command$+" removed "+getmonsterinfo(#killcount_mob_id[[email protected]], MOB_NAME)+" from slot "[email protected]+" successfully."; deletearray #killcount_mob_id; deletearray #killcount_amount; } else if ([email protected]_parameters$[1] != "") { [email protected] = atoi([email protected]_parameters$[1]); if ([email protected] < 0 || [email protected] >= .max_slot) { dispbottom [email protected]_command$+" invalid slot #"[email protected]+" (min = 0, max = "+.max_slot+")."; end; } } else { dispbottom [email protected]_command$+" removed "+getmonsterinfo(#killcount_mob_id[[email protected]], MOB_NAME)+" from slot "[email protected]+" successfully."; #killcount_mob_id[[email protected]] = 0; #killcount_amount[[email protected]] = 0; } #killcount_mob_id$ = "#"; for ([email protected] = 0; [email protected] < .max_slot; [email protected]++) #killcount_mob_id$ = #killcount_mob_id$ + #killcount_mob_id[[email protected]] + "#"; } else if (getmonsterinfo(atoi([email protected]_parameters$[0]), MOB_NAME) != "null") { [email protected]_mob_id = atoi([email protected]_parameters$[0]); if ([email protected]_parameters$[1] != "") { [email protected] = atoi([email protected]_parameters$[1]); if ([email protected] < 0 || [email protected] >= .max_slot) { dispbottom [email protected]_command$+" invalid slot #"[email protected]+" (min = 0, max = "+.max_slot+")."; end; } } [email protected]_index = inarray(#killcount_mob_id, [email protected]_mob_id); if ([email protected]_index != -1) { dispbottom [email protected]_command$+" already registerd "+getmonsterinfo(#killcount_mob_id[[email protected]_index], MOB_NAME)+" at slot "[email protected]_index+" with current "+F_InsertComma(#killcount_amount[[email protected]])+" kills."; end; } if ([email protected]_mob_id != #killcount_mob_id) { #killcount_mob_id[[email protected]] = [email protected]_mob_id; #killcount_amount[[email protected]] = 0; dispbottom [email protected]_command$+" registered "+getmonsterinfo(#killcount_mob_id[[email protected]], MOB_NAME)+" at slot "[email protected]_index+", will start counting."; } #killcount_mob_id$ = "#"; for ([email protected] = 0; [email protected] < .max_slot; [email protected]++) #killcount_mob_id$ = #killcount_mob_id$ + #killcount_mob_id[[email protected]] + "#"; } else if (compare([email protected]_parameters$[0], "list")) { for ([email protected] = 0; [email protected] < .max_slot; [email protected]++) dispbottom getmonsterinfo(#killcount_mob_id[[email protected]], MOB_NAME)+" Kill: "+F_InsertComma(#killcount_amount[[email protected]]); } else { dispbottom [email protected]_command$+" failed. Usage: "[email protected]_command$+" <list|reset|mob_id> {slot}"; } end; OnNPCKillEvent: [email protected] = killedrid; if (compare(#killcount_mob_id$, "#"[email protected]+"#")) { [email protected] = inarray(#killcount_mob_id, [email protected]); #killcount_amount[[email protected]]++; dispbottom getmonsterinfo([email protected], MOB_NAME)+" Kill: "+F_InsertComma(#killcount_amount[[email protected]]); } end; }
-
1.
save the current appearance data into a variable
then change the appearance to new appearance based on item
when unequipped, load the appearance from the stored variable data
2.
retrieve and store existing cards or enchantment into a temporary variable, then use script command items like getitem2, getitem3....etc to create the new items along with old and new enchantments
-
On 10/28/2021 at 1:19 PM, ViewtifulNinja said:
automatically triggers an event when the character reaches a certain job level
- script sample -1,{ OnPCJobLvUpEvent: if (JobLevel >= 40) { // your codes. } end; } -
-
query_sql("UPDATE `login` SET `deposit` = (`deposit` + "[email protected]+" - "+(([email protected] / 100) * 2)+"), `tax` = (`tax` + "+(([email protected] / 100) * 2)+") WHERE `account_id` = "+getcharid(3)+" LIMIT 1");-
1
-
Ban GM from trading, selling/buying from vendors and using mail but allow them to use @storage
in Source Requests
Posted
remove the mail command from them, why would they need it if they aren't allow to trade anything.
If these is a need to transfer items to player, just use an NPC script that allow GM to send item to players (or previously also known as itemizer script)
or enable to log to trace them.