Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    245

Everything posted by AnnieRuru

  1. 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
  2. AnnieRuru

    @mobalive

    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
  3. @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 ...
  4. 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 ...
  5. 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
  6. 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
  7. 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 ...
  8. 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
  9. 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)
  10. 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
  11. https://github.com/AnnieRuru/Release/blob/master/plugins/guild_skill_notification.c
  12. 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 ....
  13. 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 ?
  14. 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
  15. 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 ...
  16. AnnieRuru

    Hi

    for playing yourself -> for development purposes ->
  17. 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; }
  18. 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
  19. 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
  20. 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
  21. 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
  22. just use OnNPCKillEvent and makeitem2 script command, shouldn't very hard to do
  23. 1.5 - plugin - remove the OnPCUseSkillEvent.conf file
  24. 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 !!
  25. 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
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.