-
Content Count
1677 -
Joined
-
Last visited
-
Days Won
246
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by AnnieRuru
-
How to Remove Base EXP | Base Drop (VIP)
AnnieRuru replied to MikZ's question in General Server Support
run this script, and click on it prontera,155,185,4 script ksjdhfksdjfh 1_F_MARIA,{ ModExp = 100; ModDrop = 100; ModDeath = 100; // BankVault = 1000; // in-game bank variable, limit to INT signed end; } to reset everything back to normal additionally, its store in SQL table `account_data` select * from account_data; where your account bank balance store there as well -
https://github.com/AnnieRuru/Release/blob/master/Guides/What is dynamic_mob and how it affects scripts.md. https://rathena.org/board/topic/102715-mvp-board/#comment-357487 unfortunately, Hercules/rAthena has dynamic_mob option, which is not available on Aegis, official ragnarok emulator we can't just simply mobcount the MVP because the boss_monster are not loaded until someone warp into the map the TBL_MOB in the topic you link to, using iteration, is equivalent to getunits script command, also doesn't cache the boss_monster there is a tricky way to do this however, which, in my theory, whenever a script command boss_monster pops up, push a source variable, and again this source variable can be read by scripts, and thus provide us to check either that MVP is available or not this question also has been asked to me privately in discord, and currently in 1 of my todo list
-
@RagnarokOnline2015 must be using RENEWAL in renewal, its base atk + weapon atk simply equip any weapon will do, like I'm using priest, equip a club "@refine 0 10", the refine will increase the value along with bonus bAtk or bonus bAtk2 in renewal, equip fire-brand will increase the value there @Orca must be using pre-renewal yes, equip a fire-brand doesn't increase that value, to increase bAtk2, the only way is through refine "@refine 0 10" on your fire-brand, or using bonus bAtk2 and I repeat again, THIS IS OFFICIAL <-- tested same thing happen in rathena as well(EDIT) this atk/matk stuffs has even confuse some developers EDIT: seems like I misunderstood the question, you want to increase the 65535, not to add to the bAtk2 bonus ...
- 11 replies
-
- max atk hercules
- change max atk
-
(and 3 more)
Tagged with:
-
Item drop with random refine level/card
AnnieRuru replied to WhiteEagle's question in Source Requests
curious, you mean you apply this https://github.com/HerculesWS/Hercules/pull/2309 modification ? if what you said is real ... then there's bug on that pull request ... hopefully that PR will get merge ... well we have inactive admin... means our current development is very very ... very slow ... -
this isn't an issue, it just say it runs this event too many times probably having some scripts runs jobchange + statusup +equip + .... etc stuffs I remember you said something about having a refiner script runs in loop ... probably caused by that and even that ... it shouldn't effect anything ... just an error message
-
yes, I having some doubts why it always display rathena website when I change screen resolution in-game so akkarin actually insert some modification to make the client exit and always go visit rathena.org, I think downloading the one provided by Ridley one .... now this gonna take another 3~4 days
-
hercules is compatible with newer hexed client but that doesn't mean every hexed client is stable for use in live server currently the recommended client date everyone using is 2018-06-21aRagexeRE I'm just using this one to test some newer stuffs, like the barter system yeah, this client seems to crash... probably because of gravity ... doing that ragexe/ragexere name restriction .. also can't enable zoom out, and can't remove chat limit ...
-
why not? prontera,155,185,5 script quest 1_F_MARIA,{ mes "quest giver"; next; for ( .@i = 0; .@i < 3; ++.@i ) .@menu$[.@i] = sprintf( _$( "%sQuest %d" ), F_MesColor((quest > .@i *2)? C_GRAY : C_BLACK), .@i +1 ); .@s = select( implode( .@menu$, ":" ) ) -1; .@state = .@s *2; if ( quest > .@state ) { mes "you have completed this quest"; close; } else if ( quest < .@state ) { mes "you can't take this quest yet."; close; } mesf "Go talk to npc %d", .@s +1; quest = .@state +1; close; } function script F_quest_state { .@npcid = getarg(0); .@state = (.@npcid -1) *2 +1; if ( quest == .@state ) { dispbottom sprintf( _$( "complete %d" ), .@npcid ); quest = .@state +1; } end; } prontera,150,180,5 script npc 1 1_F_MARIA,{ F_quest_state(1); } prontera,155,180,5 script npc 2 1_F_MARIA,{ F_quest_state(2); } prontera,160,180,5 script npc 3 1_F_MARIA,{ F_quest_state(3); } prontera,160,185,5 script reset 1_F_MARIA,{ quest = 0; } and this is quest log with achievement system { Id: 49920 Name: "Quest 1" }, { Id: 49921 Name: "Quest 2" }, { Id: 49922 Name: "Quest 3" }, [49920] = { Title = "Quest 1", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 1<INFO>prontera,150,180,</INFO></NAVI>" }, Summary = "Talk to NPC 1", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 150, NpcPosY = 180, }, [49921] = { Title = "Quest 2", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 2<INFO>prontera,155,180,</INFO></NAVI>" }, Summary = "Talk to NPC 2", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 155, NpcPosY = 180, }, [49922] = { Title = "Quest 3", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 3<INFO>prontera,160,180,</INFO></NAVI>" }, Summary = "Talk to NPC 3", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 160, NpcPosY = 180, } { Id: 109993 Name: "Custom Quest" Type: "ACH_QUEST" Objectives: { *1: { Description: "Complete Quest 1" } *2: { Description: "Complete Quest 2" } *3: { Description: "Complete Quest 3" } } Points: 0 }, [109993] = { UI_Type = 0, group = "CHATTING", major = 4, minor = 0, title = "Custom Quest", content = { summary = "Visit the Quest Giver", details = "Visit the Quest Giver." }, resource = { [1] = { text = "Complete Quest 1" }, [2] = { text = "Complete Quest 2" }, [3] = { text = "Complete Quest 3" } }, score = 0 }, prontera,155,185,5 script quest 1_F_MARIA,{ mes "quest giver"; next; for ( .@i = 0; .@i < 3; ++.@i ) .@menu$[.@i] = sprintf( _$( "%sQuest %d" ), F_MesColor((questprogress( 49920+ .@i ) == 2)? C_GRAY : C_BLACK), .@i +1 ); .@s = select( implode( .@menu$, ":" ) ) -1; .@qid = 49920+ .@s; if ( questprogress(.@qid) == 2 ) { mes "you have completed this quest"; close; } else if ( .@qid == 49920 ); // break; else if ( questprogress(.@qid -1) != 2 ) { mes "you can't take this quest yet."; close; } mesf "Go talk to npc %d", .@s +1; if ( questprogress(.@qid) == 0 ) setquest .@qid; close; } function script F_quest_state { .@npcid = getarg(0); .@qid = .@npcid -1 + 49920; if ( questprogress(.@qid) == 1 ) { completequest .@qid; dispbottom sprintf( _$( "complete %d" ), .@npcid ); achievement_progress 109993, .@npcid, 1, 1; } end; } prontera,150,180,5 script npc 1 1_F_MARIA,{ F_quest_state(1); } prontera,155,180,5 script npc 2 1_F_MARIA,{ F_quest_state(2); } prontera,160,180,5 script npc 3 1_F_MARIA,{ F_quest_state(3); } prontera,160,185,5 script reset 1_F_MARIA,{ for ( .@i = 49920; .@i <= 49922; ++.@i ) if ( questprogress(.@i) ) erasequest(.@i); end; } have fun playing with it actually this is very simple script, just wanna play around a little bit
-
the latest available KRO client download... https://rathena.org/board/topic/106413-kro-full-client-2019-02-25-includes-bgm-rsu/ so I try download the nearest hexed client ... http://nemo.herc.ws/clients/2019-02-20aRagexeRE/ Everything seems to be working fine in-game the problem is during exit the client, it just crash ... 1. press Alt+F4 2. click -> Game Option -> Exit to Windows button exit the program in both methods also crash I noticed that when click -> Game Option -> Exit to Windows button, my mouse cursor stuck in-game @4144 9 Disable 1rag1 type parameters (Recommended) 13 Disable Ragexe Filename Check (Recommended) 23 Enable /who command (Recommended) 34 Enable /showname (Recommended) 35 Read Data Folder First 36 Read msgstringtable.txt (Recommended) 38 Remove Gravity Ads (Recommended) 39 Remove Gravity Logo (Recommended) 41 Disable Nagle Algorithm (Recommended) 44 Translate Client (Recommended) 46 Use Normal Guild Brackets (Recommended) 47 Use Ragnarok Icon 49 Enable Multiple GRFs (Recommended) 64 @ Bug Fix (Recommended) 65 Load Custom lua file instead of iteminfo*.lub (Recommended) 84 Remove Serial Display (Recommended) 90 Enable DNS Support (Recommended) 208 Restore Cash Shop Icon 212 Restore Roulette 213 Disable Help Message on Login (Recommended) 230 Always load Korea ExternalSettings lua file 231 Remove hardcoded address/port (Recommended) 232 Restore old login packet (Recommended)
-
it caused by a setting in conf/map/battle/player.conf // When set to true, forces skill points gained from 1st class to be put into 1st class // skills, and forces novice skill points to be put into the basic skill. (Note 1) player_skillup_limit: true so its either you have set that to false ... OR ... // src/map/pc.c - LINE 1928 static int pc_calc_skilltree_normalize_job(struct map_session_data *sd) { int skill_point, novice_skills; uint16 job; nullpo_ret(sd); job = sd->job; if (!battle_config.skillup_limit || pc_has_permission(sd, PC_PERM_ALL_SKILL)) return job; you are using GM account that has permission to bypass this
-
https://github.com/AnnieRuru/Release/blob/master/plugins/guild_skill_notification.c
-
static void guild_block_skill(struct map_session_data *sd, int time) { uint16 skill_id[] = { GD_BATTLEORDER, GD_REGENERATION, GD_RESTORE, GD_EMERGENCYCALL }; int i; for (i = 0; i < 4; i++) skill->blockpc_start(sd, skill_id[i], time); } hercules uses skill->blockpc_start and skill->blockpc_end to just set sd->blockskill[skill_id] = true:false; so you can just hook to skill->blockpc_end to display the message for the guild master to display the time left in min:sec, when guild master use the skill, run DIFF_TICK function oh wait this is request section ....
-
wait wait, I was asking question back before attempting to write out this script, and I still haven't made title system script commands plugin yet ... I don't understand why you mark that as answer while I was actually asking for more information ... rephrase again 1. you have to list out which MVP are easy/normal/hard, easy - MVPID 1 , MVPID 2 ... normal - MVPID 1 , MVPID 2 ... ... 2. wait until I make title system script commands plugin .... going to write now 3. rewards give out by weekly or monthly are entire different formula ... you can only pick one ... 4. MVP points will trigger on MVP maps only <-- means only trigger like .... inside MVP room only ?
-
of course it can #include "common/hercules.h" #include "map/mob.h" #include "map/npc.h" #include "map/mapreg.h" #include "plugins/HPMHooking.h" #include "common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "OnMobDrop", SERVER_TYPE_MAP, "x.x", HPM_VERSION, }; const char *event_label = "itemdrop::OnMobDrop"; struct item_drop *mob_setdropitem_post( struct item_drop* retVal, int nameid, int qty, struct item_data *data ) { mapreg->setreg( reference_uid( script->add_variable("$@mobdrop_itemid"), 0), nameid ); npc->event_do(event_label); return retVal; } HPExport void server_online( void ) { struct event_data *ev = (struct event_data*)strdb_get( npc->ev_db, event_label ); if ( ev == NULL || ev->nd == NULL ) { ShowWarning( "NPC label "CL_WHITE"%s"CL_RESET" does not found. Unloading "CL_WHITE"OnMobDrop"CL_RESET" Plugin.\n", event_label ); // core->runflag = CORE_ST_STOP; } else addHookPost( mob, setdropitem, mob_setdropitem_post ); } because it doesn't attach to any player during processing drop, so you can run this as *donpcevent prontera,155,185,5 script itemdrop 1_F_MARIA,{ end; OnMobDrop: announce F_ITEML($@mobdrop_itemid), bc_all; end; } /// obtain log type character for item/zeny logs static char log_picktype2char(e_log_pick_type type) { switch( type ) { case LOG_TYPE_TRADE: return 'T'; // (T)rade case LOG_TYPE_VENDING: return 'V'; // (V)ending case LOG_TYPE_PICKDROP_PLAYER: return 'P'; // (P)player case LOG_TYPE_PICKDROP_MONSTER: return 'M'; // (M)onster case LOG_TYPE_NPC: return 'S'; // NPC (S)hop case LOG_TYPE_SCRIPT: return 'N'; // (N)PC Script case LOG_TYPE_STEAL: return 'D'; // Steal/Snatcher case LOG_TYPE_CONSUME: return 'C'; // (C)onsumed case LOG_TYPE_PRODUCE: return 'O'; // Pr(O)duced/Ingredients case LOG_TYPE_MVP: return 'U'; // MVP Rewards case LOG_TYPE_COMMAND: return 'A'; // (A)dmin command case LOG_TYPE_STORAGE: return 'R'; // Sto(R)age case LOG_TYPE_GSTORAGE: return 'G'; // (G)uild storage case LOG_TYPE_MAIL: return 'E'; // (E)mail attachment case LOG_TYPE_AUCTION: return 'I'; // Auct(I)on case LOG_TYPE_BUYING_STORE: return 'B'; // (B)uying Store case LOG_TYPE_LOOT: return 'L'; // (L)oot (consumed monster pick/drop) case LOG_TYPE_BANK: return 'K'; // Ban(K) Transactions case LOG_TYPE_DIVORCE: return 'Y'; // Divorce case LOG_TYPE_ROULETTE: return 'Z'; // Roulette case LOG_TYPE_RENTAL: return 'W'; // Rental case LOG_TYPE_CARD: return 'Q'; // Card case LOG_TYPE_INV_INVALID: return 'J'; // Invalid in inventory case LOG_TYPE_CART_INVALID: return 'H'; // Invalid in cart case LOG_TYPE_EGG: return '@'; // Egg case LOG_TYPE_QUEST: return '0'; // Quest case LOG_TYPE_SKILL: return '1'; // Skill case LOG_TYPE_REFINE: return '2'; // Refine case LOG_TYPE_OTHER: return 'X'; // Other } see src\map\log.c for more information see previous post, make sure only run with @pickup_action == LOG_TYPE_PICKDROP_PLAYER flag
-
Chat space limitation!/Scammer avoid *Will pay for help*
AnnieRuru replied to a question in Source Requests
bump https://github.com/AnnieRuru/Release/blob/master/plugins/GM_impersonate/GM_impersonate_0.5.c - fix this and use in latest hercules just want to get through the bottom of this ... -
for playing yourself -> for development purposes ->
-
EDIT: I think should hook to pc->additem, not pc->takeitem https://github.com/AnnieRuru/Release/blob/master/plugins/OnPCPickUpEvent/OnPCPickUpEvent_0.4.c - add pc->delitem to run when player drop item prontera,155,185,5 script dfskhfs 1_F_MARIA,{ end; OnPCPickUpEvent: if ( @pickup_action != LOG_TYPE_PICKDROP_PLAYER && @pickup_amount > 0 ) end; announce sprintf( _$( "%s has pick up %s !!" ), strcharinfo(PC_NAME), getitemname2( @pickup_itemid, @pickup_identify, @pickup_refine, @pickup_attribute, @pickup_card1, @pickup_card2, @pickup_card3, @pickup_card4 ) ), bc_all; // dispbottom @pickup_amount +" "+ @pickup_uniqueid1 +" "+ @pickup_uniqueid2; end; }
-
Item drop with random refine level/card
AnnieRuru replied to WhiteEagle's question in Source Requests
the cards can be done by retrieve the card ID from `item_db` SQL table, its not that hard to do https://github.com/AnnieRuru/Release/blob/master/plugins/addrefinedrop/addrefinedrop_0.2.c btw, this is simple stuffs .... PS: when testing, I turned on autoloot and using custom identifier script -
the monster drop are not attaching to any player, because it just simply drop on the floor the only time it attach the player is when the one of the party member has "@autoloot" enabled, and also just attach to the party member having "@autoloot" what's the idea behind this modification ? I remember I made rare drop announcement patch during eathena time if( sd && sd->status.mod_drop != 100 ) { drop_rate = drop_rate * sd->status.mod_drop / 100; if( drop_rate < 1 ) drop_rate = 1; } just add announce blah blah after this line in mob_dead function or if you mean it trigger when player pick up an item, then can try my OnPCPickUpEvent
-
shops Lotti Girl
AnnieRuru replied to AnnieRuru's topic in Quest, Shops, Functions & Algorithms Releases
hmm ? I already post up the topic links in the spoiler isn't it ? those are the topics that are made inside rathena forum, and its compatible with rathena but if you insist of my work ... well we can talk price -
Item drop with random refine level/card
AnnieRuru replied to WhiteEagle's question in Source Requests
exactly the point, I assumed this is use in events, so you already have mf_nomobloot enabled disable monster drop on the map, and use makeitem2 script command to make monster drop items instead so you mean this is use on normal monster drop as well ? #include "common/hercules.h" #include "map/mob.h" #include "plugins/HPMHooking.h" #include "common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "addrefinedrop", SERVER_TYPE_MAP, "x.x", HPM_VERSION, }; struct item_drop *mob_setdropitem_post( struct item_drop* retVal, int nameid, int qty, struct item_data *data ) { if ( retVal->item_data.nameid == 1202 ) retVal->item_data.refine = 2; return retVal; } HPExport void plugin_init( void ) { addHookPost( mob, setdropitem, mob_setdropitem_post ); } tested with killing poring repeatedly, "@monster 1002 100" and go for item Knife_ drop -
Item drop with random refine level/card
AnnieRuru replied to WhiteEagle's question in Source Requests
just use OnNPCKillEvent and makeitem2 script command, shouldn't very hard to do -
1.5 - plugin - remove the OnPCUseSkillEvent.conf file
-
possible, but the event label can't throw error anymore during server start-up you see, the server has an order when loading stuffs [Status]: Done reading '64' command aliases in 'conf/atcommand.conf'. [Status]: Done reading '4' channels in 'conf/channels.conf'. [Status]: Done reading '10600' entries in 're/item_db.conf'. ... [Status]: Done reading '1128' entries in 'db/re/skill_db.conf'. // <--- HERE !!! [Status]: Done reading '264' entries in 'db/produce_db.txt'. [Status]: Done reading '136' entries in 'db/create_arrow_db.txt'. .... [Status]: Done reading '15' zones in 'db/re/map_zone_db.conf'. [Status]: Done reading '0' entries in 'db/mob_item_ratio.txt'. [Status]: Done reading '40' entries in 'mob_chat_db.txt'. [Status]: Done reading '1724' entries in 're/mob_db.conf'. ... [Status]: Done reading '3064' entries in 'quest_db.conf'. [Status]: Done reading '344' entries in 'db/re/achievement_db.conf'. [Status]: Done reading '11' entries in 'db/achievement_rank_db.conf'. [Info]: Done loading '8' NPCs: <-------------------------------------- HERE !!! -'0' Warps -'0' Shops -'8' Scripts -'0' Spawn sets -'0' Mobs Cached -'0' Mobs Not Cached [Status]: Done reading '56' entries in 'db/stylist_db.conf'. [Status]: Event 'OnInit' executed with '4' NPCs. [Info]: Hercules, Copyright (C) 2012-2018, Hercules Dev Team and others. [Info]: Licensed under the GNU General Public License, version 3 or later. [Status]: Server is 'ready' and listening on port '5121'. [Status]: Done reading '4' entries in 'conf/import/OnPCUseSkillEvent.conf'. <------ HERE !!! if I hook to the skill_validate_additional_fields, it will always say Event label NOT FOUND, because the npc wasn't loaded yet my plugin doesn't read the OnPCUseSkillEvent.conf file during [HPExport void plugin_init] function, but at [HPExport void server_online] function this is to make sure it runs AFTER the npc files are loaded yes, its possible to just hook to the skill_validate_additional_fields function, but it wont throw error on server start-up anymore the npc label check will be done when player is casting the skill instead, <-- which is already too late --> I want the error thrown during server start-up struct event_data *ev = (struct event_data*)strdb_get(npc->ev_db, event); if ( ev == NULL || ev->nd == NULL ) { ShowWarning( "OnPCUseSkillEvent: NPC label "CL_WHITE"%s"CL_RESET" does not found on skill "CL_WHITE"%s(%d)"CL_RESET" entry no."CL_WHITE"%d"CL_RESET" in '"CL_WHITE"%s"CL_RESET"'.\n", event, skillname, skillid, i, confpath ); continue; } EDIT: hmm ... yeah, why not just try hook both ... hook to the skill_validate_additional_fields function, then check the npc label again at [HPExport void server_online] function ... ... give it a try ... EDIT2: there is no addToSKILLDATA in HPMi.h !!
-
Quest Sample Questlog & Achievement script
AnnieRuru replied to AnnieRuru's topic in Quest, Shops, Functions & Algorithms Releases
1.1 update both scripts to support achievement systems https://github.com/AnnieRuru/Release/blob/master/scripts/Quest %26 Shops/quest log/quest_log_1.1.txt. https://github.com/AnnieRuru/Release/blob/master/scripts/Quest %26 Shops/quest log/daily_quest_log_1.1.txt