-
Posts
10015 -
Joined
-
Days Won
400
Community Answers
-
Emistry's post in How to merge multiple arrays into a single array? was marked as the answer
setarray .combinedArray[getarraysize(.combinedArray)], .attr1, getarraysize(.attr1); setarray .combinedArray[getarraysize(.combinedArray)], .attr2, getarraysize(.attr2); setarray .combinedArray[getarraysize(.combinedArray)], .attr3, getarraysize(.attr3); setarray .combinedArray[getarraysize(.combinedArray)], .attr4, getarraysize(.attr4); setarray .combinedArray[getarraysize(.combinedArray)], .attr5, getarraysize(.attr5); setarray .combinedArray[getarraysize(.combinedArray)], .attr6, getarraysize(.attr6);
-
Emistry's post in Skill Plagiarist? was marked as the answer
its probably better to wait or use this PR
https://github.com/rathena/rathena/pull/6304
all the plagiarism npc out there enabled stalker class to learn up to 2 skills instead of 1 skill only.
-
Emistry's post in Itemlink on @mobinfo was marked as the answer
conf/battle/feature.conf#L143-L148
// Itemlink System on informational related commands (Note 1) // Generates an itemlink string for an item and can be used for npctalk, message, // dispbottom, and broadcast commands. The result is clickable-item name just // like from SHIFT+Click from player's inventory/cart/equipment window. // Requires: 2015-11-04Ragexe or later feature.itemlink: on
-
Emistry's post in Can anyone help me about dooming a certain map every 30 minutes? was marked as the answer
- script sample -1,{ OnMinute00: OnMinute30: .@size = getmapunits(BL_PC, "ordeal_a02", .@gid); for (.@i = 0; .@i < .@size; .@i++) { if (unitexists(.@gid[.@i])) unitkill .@gid[.@i]; } end; }
-
Emistry's post in Anyone know where the leveling curve info is so I can change it? was marked as the answer
db/pre-re/job_exp.yml
you meant adjusting the exp required for each level ?
-
Emistry's post in Requesting Pvp Warper w/ Announcer COntrol was marked as the answer
.@enter$ change to
.enter$
-
Emistry's post in koe patch on 2020 rathena error was marked as the answer
try add
#include "mapreg.hpp"
-
Emistry's post in Convert prize giving mail to getitem was marked as the answer
.@aid = convertpcinfo(.players[.@i],CPC_ACCOUNT); getitem .item_win, .count_win, .@aid;
-
Emistry's post in problem update table sql error console was marked as the answer
SELECT * FROM rush_mvp WHERE `char_id` = '"+getcharid(0)+"'", .@CharID change to
SELECT `char_id` FROM rush_mvp WHERE `char_id` = '"+getcharid(0)+"'", .@CharID or whatever that field was named for char id
-
Emistry's post in How to add points on mob kill on this script was marked as the answer
just find
dispbottom "You earned 1 Arena Points"; and change it to
dispbottom "You earned 1 Arena Point. Total "+F_InsertComma(arenapoint)+" Points"; same goes for other arena points display message.
-
Emistry's post in problem with NPC menu disappearing and then char freezing was marked as the answer
you can disable the SECURE_NPCTIMEOUT
or
add this to your warper npc
*ignoretimeout <flag>{,<char_id>}; Disables the SECURE_NPCTIMEOUT function on the character invoking the script, or by the given character ID/character name. Valid flag: 0 - Enabled SECURE_NPCTIMEOUT. 1 - Disable SECURE_NPCTIMEOUT. Note: SECURE_NPCTIMEOUT must be enabled for this to work.
-
Emistry's post in Need Help [Warning]: buildin_unitwalk: Unit has already been forced to walk and not reached it's destination yet. was marked as the answer
stop the current script execution or wait until it reached destination only to trigger next unitwalk
-
Emistry's post in Regarding [VIP System] about vip_drop_increase: was marked as the answer
in the mob_dead(...)
search for
drop_rate = mob_getdroprate(src, md->db, md->db->dropitem[i].rate, drop_modifier); replace with
if (it->type == IT_CARD) drop_rate = md->db->dropitem[i].rate; else drop_rate = mob_getdroprate(src, md->db, md->db->dropitem[i].rate, drop_modifier); hmm... nvm this actually removed all modifier.
it probably better if you pass the item type into
drop_rate = mob_getdroprate(src, md->db, md->db->dropitem[i].rate, drop_modifier, it); then
int mob_getdroprate(struct block_list *src, std::shared_ptr<s_mob_db> mob, int base_rate, int drop_modifier,struct item_data it) then add the item type checking to skip if its card and is vip
if (pc_isvip(sd) && it->type != IT_CARD) { // Increase item drop rate for VIP.
-
Emistry's post in How to remove 32,000 Critical Limit on Pre-Renewal client? was marked as the answer
you can't, perhaps just consider use a newer client that lifted this limit.
-
Emistry's post in R>Modified Floating Rates was marked as the answer
npc/custom/etc/floating_rates.txt
remove the drop rate modifier
change the trigger time
-
Emistry's post in Index (idx=0) out of range (nargs=0) and no default value found was marked as the answer
that is because you call the function without pass in any parameters/arguments or set a defeault value for each of getarg(...)
getarg(0, "default_value") function script SC_MOVEARM { movenpc getarg(0, strnpcinfo(3)),rand(2,390),rand(2,390); getmapxy(.@map$,.@x,.@y, BL_NPC,getarg(0, strnpcinfo(3))); if( !checkcell(.@map$,.@x,.@y,cell_chkreach) ){ return 0; } if( !checkcell(.@map$,.@x,.@y,cell_chkpass) ){ return 0; } return 1; }
but as sader mentioned, your label with SC_MOVEARM name isn't suitable, you shouldn't name any label start with SC_ since its predefined for status change constants.
and learn to use duplicate(...) npc instead of copy all npcs like that
-
Emistry's post in Need to add GM Reset Command In Hunting Mission was marked as the answer
- script atcmd_example -1,{ OnInit: bindatcmd "reset",strnpcinfo(3) + "::OnAtcommand"; end; OnAtcommand: query_sql("DELETE FROM `char_reg_num` WHERE `key` LIKE 'Mission%'"); query_sql("DELETE FROM `acc_reg_num` WHERE `key` LIKE 'Mission%'"); .quest_count = getvariableofnpc(.Quests, "Hunting Missions"); addrid(0); #Mission_Count = 0; #Mission_Delay = 0; #Mission_Total = 0; @hm_char_del_check = 0; for (.@i = 0; .@i < .quest_count; .@i++) { setd "Mission" + .@i, 0; setd "Mission" + .@i+"_", 0; } dispbottom "A GM has forced reset your Hunting mission status."; end; }
-
Emistry's post in Help on 2 NPCs/Scripts - Kafra Suprema e Evento Chefe do Mundo / World Boss. was marked as the answer
- script WorldBoss::alwbman -1 ,{ end; OnNPCKillEvent: .wbKilledMob++; if(.wbKilledMob >= .killPopBoss) { .@map$ = .townMap$[rand(getarraysize(.townMap$) - 1)]; areamonster .@map$, 0, 0, 250, 250, "--ja--", .wBossId, 1, strnpcinfo(3) + "::OnWBossDied"; .boss_gid = $@mobid[0]; initnpctimer; announce "[Chefe do Mundo]: Humanos tolos, como ousam me despertar? Voc阺 ir鉶 sentir a minha ira!", bc_all, 0xFF0000; sleep 10000; announce "[Chefe do Mundo]: Muahahahahahaha Muahahahahahaha Muahahahahahaha...", bc_all, 0xFF0000; sleep 10000; announce "[Chefe do Mundo]: O Chefe do Mundo surgiu em >> " + .@map$ + " << para matar todos os aventureiros que o despertaram!", bc_all, 0xFF0000; } end; OnWBossDied: announce "[Chefe do Mundo]: " + strcharinfo(0) + " acerta o golpe final e acaba de matar o Chefe do Mundo! Parab閚s!", bc_all, 0xFF0000; sleep 5000; announce "[Chefe do Mundo]: " + strcharinfo(0) + " acaba de receber uma grande recompensa por det?lo!", bc_all, 0xFF0000; sleep 5000; announce "[Chefe do Mundo]: N鉶 fique contente humano eu retornarei um dia!", bc_all, 0xFF0000; getitem .rewardId, .rewardCount; OnTimer7200000: // after 2 hours stopnpctimer; .wbKilledMob = 0; if (unitexists(.boss_gid)) unitkill .boss_gid; end; OnInit: .killPopBoss = 10; setarray .townMap$[0],"prontera","geffen","morocc","payon","izlude","alberta","aldebaran","brasilis","dewata"; //to fill .wBossId = 2255; .rewardId = 14232; .rewardCount = 5; end; }
-
Emistry's post in Problems with my Warper was marked as the answer
try disable SECURE_NPCTIMEOUT
or add this to your warper script
*ignoretimeout <flag>{,<char_id>}; Disables the SECURE_NPCTIMEOUT function on the character invoking the script, or by the given character ID/character name. Valid flag: 0 - Enabled SECURE_NPCTIMEOUT. 1 - Disable SECURE_NPCTIMEOUT. Note: SECURE_NPCTIMEOUT must be enabled for this to work.
-
Emistry's post in entrance at et need tcg as requirment was marked as the answer
L_Enter: mes "Please pay me one "+getitemname(7227); if (select("Alright", "Cancel") == 2) close3; if (countitem(7227) < 1) { mes "You dont have enough "+getitemname(7227); close3; } switch(instance_enter("Endless Tower")) { case IE_OTHER: mes "An unknown error has occurred."; close; case IE_NOINSTANCE: mes "The memorial dungeon Endless Tower does not exist."; mes "The party leader did not generate the dungeon yet."; close; case IE_NOMEMBER: mes "You can enter the dungeon after making the party."; close; case IE_OK: delitem 7227, 1; mapannounce "e_tower", strcharinfo(0) +" of the party, "+ getpartyname( getcharid(1) ) +", is entering the dungeon, Endless Tower.",bc_map,"0x00ff99",FW_NORMAL,12; if (getarg(1)) { set etower_timer,gettimetick(2); set etower_partyid, getcharid(1); setquest 60200; setquest 60201; } //warp "1@tower",52,354; if (getarg(0) == 0) close; else end; } npc/instances/EndlessTower.txt#L295
-
Emistry's post in Can i change SC_AUTOTRADE to other? was marked as the answer
it was added to ensure character will auto disconnect after it reached the time limit.
if you dont need it, might as well just remove the whole block of codes.
if( battle_config.at_timeout ) { int timeout = atoi(message); status_change_start(NULL,&sd->bl, SC_AUTOTRADE, 10000, 0, 0, 0, 0, ((timeout > 0) ? min(timeout,battle_config.at_timeout) : battle_config.at_timeout) * 60000, 0); } or just disable the at_timeout settings as mentioned previously.
-
Emistry's post in How to set Delay from get item... was marked as the answer
- script KillMon2Cash -1,{ OnNPCKillEvent: .@gettimetick = gettimetick(2); if (rand(100) < 1 && .@gettimetick > @delay) { getitem 50001,1; @delay = .@gettimetick + 60; // 60 seconds } end; }
-
Emistry's post in FluxCP Error: Unknown column 'group_id' in 'where clause' was marked as the answer
your fluxcp is too old , use a newer version of fluxcp
https://github.com/rathena/FluxCP
-
Emistry's post in How to display multiple rows of result from SQL query using NPC was marked as the answer
input .@item_id; .@size = query_sql("SELECT char_id, nameid, amount FROM `inventory` HAVING nameid = "+.@item_id+" ORDER BY amount DESC LIMIT 3",.@charid,.@nameid,.@amnt); for (.@i = 0; .@i < .@size; .@i++) dispbottom .@charid[.@i]+" : "+getitemname(.@nameid[.@i])+" "+.@amnt[.@i]+"pcs"; end;
-
Emistry's post in Help me fix my event changer script. was marked as the answer
switch(select("^000088Visit Shop^000000", "Information")){ case 1: switch(select("^000088Use Event Points^000000", "Use Event Coins")){ case 1: close; callshop "eventpoints",1; end; case 2: close; callshop "eventpoints",1; end; } break; case 2: switch(select("^000088Castle Drops^000000","Cards","Cancel")){ case 1: callshop "eventcastle",1; end; case 2: callshop "eventcards",1; end; } break; } your usage of switch() and select() isn't correct