Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    245

Everything posted by AnnieRuru

  1. https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/ and maybe this one ? https://devblogs.microsoft.com/dotnet/debug-your-net-core-apps-in-wsl-2-with-visual-studio/ ... maybe next time ... 0.4 - plugin - if its not BL_PC|BL_PET|BL_HOM|BL_MER|BL_ELEM|BL_MOB immediately jump out of function for faster processing - fix sd->status.clan_id - implement block attack [A] and buff [B ] flag - don't need to use snprintf needlessly when print out the flags - just unset the flag if the SELF flag isn't supported Kaite is indeed very interesting I'm 100% sure I've block the casting animation for Kaahi Kaizel Kaupe ... and of course Kaite but I think what you guys want is the effect of the Kaite to turn off ? that should be another kind of source edit plugin EDIT: wait, let me put ShowDebug on it again .... editing .... it send 2 types of packet, 0x9cb and 0x983 0x9cb is clif_skill_nodamage 0x983 is clif_status_change_sub means has to read p.index to know the the skill ID .... EDIT2: 0x229 ... WOW don't block this packet if the player is hiding/cloaking, enable this packetfilter will show her !! needs to be cautious about this packet... EDIT3: I think I figure it out, it is OPT3, means just set OPT3 into 0 will do
  2. PLEASE GIVE ME YOUR COMPILER I want my visual studio 2019 also display error like yours btw I'm guessing that's CentOS, this happened before on my OnPCUseSkillEvent 0.3 - plugin - add missing FILTER_CLAN flag - implement block_item type 'I' flag - fix FILTER_OTHER not working properly when the player doesn't have a party or guild - fix [C]hat type shouldn't able to filter self, since the client always shows you are talking anyway - and attempt to fix the above stupid error that doesn't show on Visual Studio
  3. 0.2 - plugin - add sub-type flags (Self/Party/Guild/Bg/Other/Homun/Mob) - add emotion filter - fix compiler warning that doesn't display on visual studio actually there are a lot of people interested in this topic... @xJhay let me just copy paste from a PM the reason I started this topic because I received the `@packetfilter` for rathena use, and asked me to convert into plugin and upon reading it I found its very inconvenient and thus I want to rewrite it that version I receive is block based on skill ID but my plan is to block based on flags, not every skill ID entry if block by skill type listed in skill_db,conf will make the plugin future proof SkillType: { (bool, defaults to "Passive") Passive: true/false (boolean, defaults to false) Enemy: true/false (boolean, defaults to false) Place: true/false (boolean, defaults to false) Self: true/false (boolean, defaults to false) Friend: true/false (boolean, defaults to false) Trap: true/false (boolean, defaults to false) } SkillInfo: { (bool, defaults to "None") Quest: true/false (boolean, defaults to false) NPC: true/false (boolean, defaults to false) Wedding: true/false (boolean, defaults to false) Spirit: true/false (boolean, defaults to false) Guild: true/false (boolean, defaults to false) Song: true/false (boolean, defaults to false) Ensemble: true/false (boolean, defaults to false) PS: just like card seller A-Z, before I made that script every member posted on the board manually insert each card ID into each npc, until I made that SQL version which rip from SQL database, that old script still works today, make it future proof another thing to note about that version is because it block base on skill ID only, it doesn't make use of the flag of each packet on the battlefield, or I mean during woe, there are a lot of packets being sent even if its unnecessary information for example, your guild and another guild A attacking defending guild B, and your guild and guild A are not on good terms and rushing to destroy the emperium my point is, guild A attacking guild B are unnecessary in my opinion, and I don't need those packet informations but I still need to know my party/guild are under attack /// 02e1 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2) and I can use <src ID> and <dst ID> and check are they the same guild ? then send packet is <dst ID> my guild mates ? then send packet the rest are not important that version simply block by skill ID and from my understanding, I wouldn't know who is actually healing me when enable `@packetfilter` there are some healer who are good in healing others and some just standing there acting like a doll waiting to get hit my idea is make additional field so only filter out unneeded information when playing as crusader, my job is to defend my party, and I want all information packets send that are threatening my party when playing as assassin, I don't have to take care of guild member, I only want to assassinate the healer or dd who are actively killing the most of my guildmates etc yeah, make it highly configurable anyway read the additional information I already made this part a reality, but so far only chat and emotions are implement, skills has to do ... maybe tomorrow ...
  4. https://rathena.org/board/topic/126404-additional-feature-for-my-own-broadcaster-npc/?do=findComment&comment=388123 after Tokei posted that I'm a bit fire up hahaha https://gist.github.com/AnnieRuru/cf56174c4bbbd3a61d4dd0c11100c425 well, yes I didn't do the stuffs he said, but its do-able with SQL table or using storing them in array reply again if you want this feature
  5. @KeiKun ask me to convert this rathena script to hercules https://rathena.org/board/topic/112255-quests-games-dicebet-gambling/ soo .... Download: script nothing much to say here, read the original topic in rathena forum original script use Zeny to bet, this script use an item to place the bet
  6. well, nobody actually cares about laws ... since the players are mostly children anyway the problem is just we don't want to get into trouble, so we (rathena/hercules) don't include any means to retrieve mac address or motherboard information etc that part must be custom made ... they run a 3rd party program in the background to retrieve such information IP proofing or something like that is just plain stupid, even mac address can be spoof https://github.com/HerculesWS/Hercules/issues/1734#issuecomment-301363299 actually this can be a very simple script, just create a code and then guild master can claim it and the item is getitembound IBT_GUILD or IBT_CHARACTER depends on how you like it
  7. query_sql("SELECT `last_ip` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_ip$); query_sql("SELECT `last_mac` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_mac$); query_sql("SELECT `last_cpu` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_cpu$); query_sql("SELECT `last_motherboard` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_mb$); impossible, and this is against EU law to retrieve computer's data without customer's agreement gepard ID is different, it just generate an ID for each client for that computer, this one is another story this one ... require to hex a client or run a 3rd party program in the background to read client's computer data maybe should have just use gepard ID check
  8. if (src != NULL && (sd == NULL || sd->auto_cast_current.type != AUTOCAST_ITEM)) { // Items that cast skills using 'itemskill' will not be handled by map_zone_db. int i; for(i = 0; i < map->list[src->m].zone->disabled_skills_count; i++) { if( skill_id == map->list[src->m].zone->disabled_skills[i]->nameid && (map->list[src->m].zone->disabled_skills[i]->type&src->type) ) { if (src->type == BL_PC) { ShowDebug("run"); #if PACKETVER >= 20080311 clif->skill_mapinfomessage(sd, 2); #else clif->messagecolor_self(sd->fd, COLOR_CYAN, msg_sd(sd, 50)); #endif } else if (src->type == BL_MOB && map->list[src->m].zone->disabled_skills[i]->subtype != MZS_NONE) { if( st->mode&MD_BOSS ) { /* is boss */ if( !( map->list[src->m].zone->disabled_skills[i]->subtype&MZS_BOSS ) ) break; } else { /* is not boss */ if( map->list[src->m].zone->disabled_skills[i]->subtype&MZS_BOSS ) break; } } return 0; } } } hhhmmmmmmm.................................................... what the f*** is this ...... it runs from `status_check_skilluse` function and I can't just hook this to change 1 or 0 because it will mess up all other skill check conditions ... well nothing is impossible but this one is ..... kinda lame to say the least for the time being try this https://gist.github.com/AnnieRuru/f6f75c9cbeb60cd49161757a2bcf3d09 later I make a PR to address this EDIT to your this is intentional no skill outside cell_pvp is meant for an event so like you can create a custom zone combine with npc guild_vs2,50,50,0 script dfkjsbkfsjb FAKE_NPC,4,4,{ end; OnInit: bindatcmd "pvpzone", strnpcinfo(NPC_NAME_UNIQUE)+"::Onaaa", 99, 100; end; OnTouch: if (strcharinfo(PC_NAME) != .playerA$ && strcharinfo(PC_NAME) != .playerB$) { warp "guild_vs2", 40,40; mes "You are not a participant"; close; } end; OnUnTouch: if (strcharinfo(PC_NAME) == .playerA$ || strcharinfo(PC_NAME) == .playerB$) mapannounce "guild_vs2", strcharinfo(PC_NAME) +" has leave the PvP Zone", bc_map; end; Onaaa: if (strcharinfo(PC_MAP) != strnpcinfo(NPC_MAP)) { mes "This command can only use on "+ strnpcinfo(NPC_MAP); close; } mes "[GM Menu]"; mes "Player A -> "+ .playerA$; mes "Player B -> "+ .playerB$; next; switch(select("input player A", "input player B", "toggle PvP Zone")) { case 1: mes "input Player A"; next; input .playerA$; close; case 2: mes "input Player B"; next; input .playerB$; close; case 3: if (getmapflag(strnpcinfo(NPC_MAP), MF_PVP)) pvpoff strnpcinfo(NPC_MAP); else cell_pvp "guild_vs2", 46, 46, 53, 53, CELL_PVP_RESPAWN_INSTANT, CELL_PVP_SKILL_DISALLOW, CELL_PVP_BONEDROP_NONE; close; } close; } some lazy effort with no name length check or player name login check but yeah you get the point
  9. needs to do some calculation on official repo is OnTimer7200000: means 2 hours btw OnTimer28800000: is 8 hours, not 4 hours so let's leave it at OnTimer28800000: then if you want 2 hours then setnpctimer 28800000 - 2*60*60*1000; startnpctimer; if you want 3 hours then setnpctimer 28800000 - 3*60*60*1000; startnpctimer; if you want 4 hours then setnpctimer 28800000 - 4*60*60*1000; startnpctimer; so it should look like this OnTimer36000: OnTimer37000: mapwarp "thana_boss","tha_t12",130,52; stopnpctimer; setnpctimer 28800000 - F_Rand(2,3,4)*60*60*1000; startnpctimer; end; OnTimer28800000: $@thana_summon = 0; $@thana_summon2 = 0; donpcevent "Memory Seal#tt1::OnEnable"; donpcevent "Memory Seal#tt2::OnEnable"; donpcevent "Memory Seal#tt3::OnEnable"; donpcevent "Memory Seal#tt4::OnEnable"; donpcevent "#thanatos_seal::OnEnable"; stopnpctimer; end; didn't hard to test ... hopefully you don't say its bug
  10. clean prontera map after empty for 10 seconds, just for testing make sure it works - script dsfkdsjhf FAKE_NPC,{ OnTimer1000: if (!getmapusers("prontera")) { if (++.empty == 10) cleanmap "prontera"; } else .empty = 0; OnInit: initnpctimer; end; } clean prt_in map after empty for 5 minutes - script dsfkdsjhf FAKE_NPC,{ OnTimer10000: if (!getmapusers("prt_in")) { if (++.empty == 30) cleanmap "prt_in"; } else .empty = 0; OnInit: initnpctimer; end; }
  11. totally don't understand what this trying to do on 1 thing, when player login, it will check the item, and if the player has the item, adjust the VIP like bonus 1. what happens if the player drop the item ? will it recalculate the exp bonus ? 2. what happens if the player has multiple of the said items ? will it stack the bonus ? 3. why use an item ???????? 4. use OnPCStatCalcEvent ????? or Charms ??? 5. is the bonus is bind to an account ???? or bind to an item ??? 6. where the the .exp_rate comes from ?? if this isn't set anywhere, they actually get 0 because anything times ZERO is equal to ZERO setparam(125, 55 * .exp_rate); // SP_MOD_EXP setparam(126, 40 * .drop_rate); // SP_MOD_DROP setparam(127, 0); // SP_MOD_DEATH I have so many questions I don't even know where to start EDIT: I think no.6 just forgot to add getbattleflag("<something>")
  12. I launch rathena test server just to make sure again, tested `@pvpon` and then `@pvpoff` the circle will stay, this is same for both rathena and hercules but there is a weird thing after I tested on rathena ... the attack cursor become normal on rathena on hercules, after `@pvpoff` the cursor still stay as sword ... means it doesn't unload the mapproperty properly hmmm ...... maybe should file a bug report about this https://github.com/HerculesWS/Hercules/issues/2892
  13. Officially, Golden_Bug_Card can defend against Coma effect which is bonus bNoMagicDamage,100; after reading the source code, it seems adding something like Eff_Coma is kinda tough but if just adding a bonus to defend against SC_COMA is kinda easier https://github.com/AnnieRuru/Release/blob/master/plugins/Request %26 Answer/bComaResist.c tested with a Club[3] with add bonus2 bWeaponComaRace,RC_All,10000; so anyway, if you just want to add another bonus for coma effect, just check with SC_COMA still stubborn want to use Eff_Coma ? sry can't help with this
  14. mob avail ... many members has been claiming the new mob avail format isn't really working let's see ... { Id: 3001 SpriteName: "AnnieRuru" Name: "AnnieRuru" Lv: 120 Hp: 1000000 Sp: 1 Exp: 1 JExp: 1 AttackRange: 1 Attack: [100, 200] Def: 99 Mdef: 99 Stats: { Str: 99 Agi: 99 Vit: 99 Int: 99 Dex: 99 Luk: 99 } ViewRange: 14 ChaseRange: 1 Size: "Size_Medium" Race: "RC_Human" Element: ("Ele_Neutral", 1) Mode: { CanMove: true CanAttack: true Aggressive: true } MoveSpeed: 150 AttackDelay: 1000 AttackMotion: 1000 DamageMotion: 1000 ViewData: { SpriteId: 4063 WeaponId: 1501 HeadTopId: 167 HeadMidId: 169 // HeadLowId: HairStyleId: 3 BodyStyleId: 1 HairColorId: 8 BodyColorId: 2 RobeId: 1 Gender: "SEX_FEMALE" } }, who said not working ??? so just add skills AnnieRuru: { AL_HEAL: { SkillState: "MSS_ANY" SkillLevel: 10 Rate: 9000 Delay: 2000 Cancelable: true SkillTarget: "MST_MASTER" CastCondition: "MSC_MASTERHPLTMAXRATE" ConditionData: 99 } AL_BLESSING: { SkillState: "MSS_IDLE" SkillLevel: 10 Rate: 10000 Delay: 60000 Cancelable: true SkillTarget: "MST_MASTER" CastCondition: "MSC_ALWAYS" } AL_INCAGI: { SkillState: "MSS_IDLE" SkillLevel: 10 Rate: 10000 CastTime: 1000 Delay: 60000 SkillTarget: "MST_MASTER" CastCondition: "MSC_ALWAYS" } AL_HEAL: { SkillState: "MSS_ANY" SkillLevel: 10 Rate: 9000 Delay: 2000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_MYHPLTMAXRATE" ConditionData: 99 } AL_HEAL: { SkillState: "MSS_ANY" SkillLevel: 10 Rate: 9000 Delay: 2000 Cancelable: true SkillTarget: "MST_FRIEND" CastCondition: "MSC_FRIENDHPLTMAXRATE" ConditionData: 99 } } and add `@summon` and done https://github.com/HerculesWS/Hercules/pull/2888 with this patch, tested it works
  15. is this a different request ? feels totally different from the first post - script kjhfkshdf FAKE_NPC,{ OnNPCKillEvent: if (strcharinfo(PC_MAP) != "prt_fild08" || .spawned == true) end; if (killedrid == PORING) ++.poringkill; else if (killedrid == DROPS) ++.dropskill; else if (killedrid == POPORING) ++.poporingkill; if (.poringkill > 10 && .dropskill > 10 && .poporingkill > 10) { getmapxy .@map$, .@x, .@y, UNITTYPE_PC; while (checkcell(.@map$, .@x2 = rand(.@x - .@area, .@x + .@area), .@y2 = rand(.@y - .@area, .@y + .@area), cell_chknopass)); monster "prt_fild08", .@x2, .@y2, "--ja--", MASTERING, 1, strnpcinfo(NPC_NAME_UNIQUE)+"::OnMobKill"; mapannounce "prt_fild08", "Mastering has been spawn", bc_map; .spawned = true; } end; OnMobKill: mapannounce "prt_fild08", "Mastering has been killed", bc_map; initnpctimer; end; //OnTimer5000: OnTimer86400000: .poringkill = 0; .dropskill = 0; .poporingkill = 0; .spawned = false; end; } prt_fild08,0,0,0,0 monster Poring 1002,1000,0,0 prt_fild08,0,0,0,0 monster Drops 1113,1000,0,0 prt_fild08,0,0,0,0 monster Poporing 1031,1000,0,0
  16. no announcement because the announce has been commented and you can always use `@mapmoblist` to check ... it's working or not ...
  17. as I said previously, pk server and pvp_nocalcrank mapflag just doesn't send the clif->pvpset packet well you seems didn't understand what I said in previous post then try this yourself, play around with the commented lines https://gist.github.com/AnnieRuru/b6ed52d55baad1a587dc9eeff2902c99#file-cell_pvp_commented-c-L91-L110 then you get what I mean yes, it looks like it can be done in theory, but I'm not too sure is it gravity hard-coded in the client side ... or ...?
  18. you mean this ? prontera mapflag pvp prontera mapflag pvp_nocalcrank even I'm not too sure about this ... that "no need to hold shift to attack" is done by changing clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); and the pvp counter is show up by clif->pvpset(sd, <rank>, <total>, <type>); #include "common/hercules.h" #include "map/pc.h" #include "map/clif.h" #include "common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "test_mapproperty", SERVER_TYPE_MAP, "x.x", HPM_VERSION, }; ACMD(a) { int type = atoi(message); clif->map_property(sd, type); clif->maptypeproperty2(&sd->bl, SELF); switch(type) { default: clif->message(fd, "You are in MAPPROPERTY_NOTHING zone"); break; case 1: clif->message(fd, "You are in MAPPROPERTY_FREEPVPZONE zone"); break; case 2: clif->message(fd, "You are in MAPPROPERTY_EVENTPVPZONE zone"); break; case 3: clif->message(fd, "You are in MAPPROPERTY_AGITZONE zone"); break; case 4: clif->message(fd, "You are in MAPPROPERTY_PKSERVERZONE zone"); break; case 5: clif->message(fd, "You are in MAPPROPERTY_PVPSERVERZONE zone"); break; case 6: clif->message(fd, "You are in MAPPROPERTY_DENYSKILLZONE zone"); break; } return true; } ACMD(b) { int rank, total, type; if (sscanf(message, "%d %d %d", &rank, &total, &type) < 3) { clif->message(fd, "need 3 argument"); return false; } clif->pvpset(sd, rank, total, type); return true; } HPExport void plugin_init (void) { addAtcommand("a", a); addAtcommand("b", b); } I tried playing around with clif->map_property and only MAPPROPERTY_FREEPVPZONE and MAPPROPERTY_PVPSERVERZONE work the rest can't even show up the pvp rank counter (the one shows at the bottom right down corner of the screen) the weird part is ... we didn't actually use MAPPROPERTY_PKSERVERZONE for pk server, we just didn't send the clif->pvpset packet ... well if it doesn't break, then don't need to fix it in theory though ... maybe it can be done in practice though ... this is all I manage to do 1.7 - plugin - fix the pvp circle shouldn't show up until you walk into PvP zone -> but the circle cannot be remove until relog or move to other map if you can find out how to really remove the pvp circle without losing the pvp counter please tell me how to do it, I'm also interest to know
  19. yeah I forgot to add BCT_ENEMY check in battle_check_target function 1.6 - plugin - fix party/guild skill (eg: Magnificat/Gloria) not working with CELL_PVP_SKILL_ALLOW due to missing BCT_ENEMY check
  20. 2.1 - script - fix a bug that player recall can bypass changelook thanks to @KeiKun
  21. NO - I am perfectionist 1.5 - plugin - fix unused struct error happens on certain compiler actually its ok to ignore, this error didn't even show up on my visual studio hahaha
  22. not that I know of it needs to relog 1.4 - plugin - fix pk server doesn't calculate the pvp points correctly when set pk_mode to 2 or 3 - add bone drop configuration
  23. @Daraen look back at his original screenshot, also same
  24. Unfortunately also still the same as Author data/EventIdNum2ItemDescTable.txt 2102# This extra line is added by AnnieRuru -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # data/EventIdNum2ItemDisplayNameTable.txt 2102#TEST ONLY# it looks like adding new line instead of overwriting the value this trick seems to be very useful for adding custom items though, but ... overwrite existing items ? why we have different result ? EDIT: isn't Dastgir said that ? itemInfo.lub will overwrite EventIdNum2ItemDisplayNameTable how come you can get that ?
  25. I also couldn't get it to work the item ID in the file is 2102 2102#Guard [999]# I double check in nemo and doesn't has anything with 'event' or 'item' my client read system\itemInfo_Sak.lub, has to disable that first ?
×
×
  • Create New...

Important Information

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