Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    245

Everything posted by AnnieRuru

  1. found a bug on this script [Debug]: script debug : 2000000 110000960 : AnnieRuru is sit-killing EnnyRuru for 6 times [Debug]: script debug : 2000000 110000960 : AnnieRuru is sit-killing EnnyRuru for 7 times [SQL]: DB error - Out of range value for column 'streaks' at row 1 [Debug]: at d:\ragnarok\rathena\src\map\script.cpp:16590 - replace into pvpladder values ( 150000, 'AnnieRuru', -3, 0, 0, from_unixtime(1547405452) ) [Debug]: Source (NPC): DOTAPVP (invisible/not on a map) [SQL]: DB error - Out of range value for column 'streaks' at row 1 [Debug]: at d:\ragnarok\rathena\src\map\script.cpp:16590 - replace into pvpladder values ( 150000, 'AnnieRuru', -2, 1, 0, from_unixtime(1547405460) ) [Debug]: Source (NPC): DOTAPVP (invisible/not on a map) [SQL]: DB error - Out of range value for column 'streaks' at row 1 [Debug]: at d:\ragnarok\rathena\src\map\script.cpp:16590 - replace into pvpladder values ( 150000, 'AnnieRuru', -1, 2, 0, from_unixtime(1547405464) ) [Debug]: Source (NPC): DOTAPVP (invisible/not on a map) should have used signed int for that field yeah and this script didn't index the kill or death field either maybe should release version 3 someday
  2. OnPCKillEvent: if ( PvPAllowed == false || getvariableofpc( PvPAllowed, killedrid ) == false ) end; .@pid = getcharid(CHAR_ID_PARTY); if ( !.@pid ) { if ( getcharip(getcharid(CHAR_ID_ACCOUNT)) == getcharip(killedrid)) end; if ( last_kill == killedrid ) end; last_kill = killedrid; PvPKills += 25; dispbottom "[ "+PvPKills+" ] PvPKills.", 0xF1948A; end; } else { .@killedrid = killedrid; getpartymember .@pid, 1; getpartymember .@pid, 2; .@origin = getcharid(CHAR_ID_ACCOUNT); .@map$ = strcharinfo(PC_MAP); for ( .@i = 0; .@i < $@partymembercount; ++.@i ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( getcharip(getcharid(CHAR_ID_ACCOUNT)) == getcharip(.@killedrid)) continue; if ( last_kill == .@killedrid ) continue; last_kill = .@killedrid; PvPKills += 25; dispbottom "[ "+PvPKills+" ] PvPKills.", 0xF1948A; } } } @raksone
  3. the answer is exactly on the no.6 of the pinned topic @raksone dispbottom "============== My Rank ==============", 0xffe066; query_sql "SELECT `points`, 1+(SELECT COUNT(1) FROM `mvp_ranking` t1 WHERE t1.`points` > t2.`points`) FROM `mvp_ranking` t2 WHERE `char_id` = "+ getcharid(0), .@points, .@rank; dispbottom "My MVP Points "+ .@points + ".", 0x6666ff; dispbottom "My Rank is: " + .@rank + ".", 0x6666ff; dispbottom "==========================================", 0xffe066; end;
  4. not really sure about bumping old topics, but this is indeed 1 of my ... oops ~ yup I forgot end; right after the npc header, thanks for telling
  5. if there is no demand, no need to pull request but if plugin ... well anyone can release whatever you want ... though, do you know most of the meaning of this constants ? even I only understand about 80% of them PDT_DIE_COUNTER, PC_DIE_COUNTER PDT_CASHPOINTS, PDT_KAFRAPOINTS, #CASHPOINTS and #KAFRAPOINTS PDT_HEAD_DIR, where is unit direction ? PDT_IDLETIME, *checkidle() script command PDT_MISSION_MOBID, I'm quite sure this should be in array most of them are useless ... although some of it already in my To-Do list... like the setunitsize, I failed to clean it before
  6. so in other words, @pk command is actually use to turn off the pk mode instead of turn on ? this actually reminds me of Diablo 2 ... when press the P, in multiplayer mode, there is a double sword icon press that will enable players to kill each other ... image below found on internet ... google search image in other words, @pk mode is use only on pk server, and players can only enable the @pk mode in town, when they leave the map they can kill other players that also has @pk on right ?
  7. if you mean ... 1. kill a boss_monster prontera,155,187,0,0 boss_monster asdf 1086,1,100000,100000,1 2. click on the tomb 3. then kill a monster @monster poring 4. then unable to move ... <-- nope I'm still able to move
  8. that's why I also don't really understand what is this plugin about, see the last few posts the original patch from eathena was like that too maybe some one should clarify to me again what this @pk really do ... all I know is this .... plugin is popular, but I don't really know its intended purposes
  9. because in a pk server, every map is considered a pvp map have to manually turn off by pvp off mapflag
  10. getting tired of people keep sending me personal message -> how do I apply your koe patch after about 6 PMs or so I getting really fed up, only then I realize there is no guide to properly teach members how to apply a diff file, so here I make one for you guys First step A lot of people download hercules in .zip format. This is WRONG. instead, follow the proper guide and use tortoisegit (if you are using windows) to download your server This is the proper guide on how to install hercules Question: but I am using rathena, not hercules Answer: just change the link into rathena ones https://github.com/rathena/rathena/wiki/Install-on-Windows Second step after you get your proper server, the first thing you have to do is get rid of your current one this is the painful process, because you did not follow the guide but on the up side, you can always update your server every week just by Git pull which already mentioned in that installation topic guide Question: but every time I Git pull, it always ask to resolve conflicts Answer: that's the reason hercules community stop providing patch file and transition towards plugin system you should always keep your server up to date with the latest revision as we always add new features and bug fix nobody on the board like to give support on old emulator Question: but rathena doesn't have plugin system Answer: yes rathena doesn't support right now, but will be soon in the near future. rathena already slowly transition towards C++ format Third Step now you have a .diff file, download the file somewhere, right click on it then point the link towards your hercules installation folder Apply Patch Serial... Review/apply single patch... if either option doesn't work, try the other Disclaimer: I am windows user, so I never use Linux or Centos whatever, so this guide is purely meant for those keep bombard my PM box over and over
  11. client side restriction, there is nothing we can do about that the sword cursor are hard-coded in the client side and only change to sword depends on unittype - monster/player/pets - and the mapflags
  12. like I said, open multiple topics if you have multiple request you don't want your topic end up like this https://rathena.org/board/topic/77120-i-need-a-code/ <-- he asked 4 questions its headache as I don't feels like answering that topic anymore this topic has 8 requests, though the last 2 were not enough information provided so at least open 6 different topics 1st close this topic as the topic starter doesn't abide the script request rule .... ... its not enforce in hercules though, but already on rathena I should've close this topic earlier ...
  13. found this old topic ... update this a little bit ... http://upaste.me/603b49950f9aa66a9 pointing this topic to somebody ... namely @luizragna
  14. then do like meko said just change chat_area_size ? I changed to 999 testing see what's the consequences ... 1. this one will also affect unittalk and npctalk ... etc 2. pet said something during its max intimacy, will also spam the whole map 3. defpattern will trigger whole map ... so only *unittalk affected, 2 and 3 doesn't
  15. change IOT_CHAR into IOT_PARTY and *warp into *warpparty ? also add *instance_check_party when applicable ... and the first 2 lines in that script was made like an event thing ... to prevent the player stay in the map if you want the player to stay in the map like quest script, then add src4instance mapflag and *instance_set_respawn
  16. 2 ways to fix this 1. simple, just add *disable_items script command at the beginning of the script 2. or you can also do like this, up to you OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; change into OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, getlook(LOOK_HEAD_BOTTOM); changelook LOOK_HEAD_TOP, getlook(LOOK_HEAD_TOP); changelook LOOK_HEAD_MID, getlook(LOOK_HEAD_MID); changelook LOOK_ROBE, getlook(LOOK_ROBE); } deletearray @qe[0],8; end;
  17. function GetQuestion { return getd(".question_" + (getarg(0) % 128) + "$[" + (getarg(0) / 128) + "]"); } function GetAnswer { return getd(".answer_" + (getarg(0) % 128) + "$[" + (getarg(0) / 128) + "]"); } function GetHint { return getd(".hint_" + (getarg(0) % 128) + "$[" + (getarg(0) / 128) + "]"); } I believe you made it opposite ? assuming that you are still using eathena, when script engine was still 128 elements it should be return getd(".question_" + (getarg(0) / 128) + "$[" + (getarg(0) % 128) + "]"); although there is no need to do like this anymore because our script engine no longer has such limitation 2nd thing is ... L_loop: do set .@i, rand( .numQuestions ); // Randomly picks a fact. while( .Q_session & 1 << .@i && .Q_session && .count < .numQuestions ); set .Q_session, .Q_session | 1 << .@i;// max 32 questions rather than using a loop, can use shuffle algorithm EDIT: for below
  18. be more specific, I couldn't read your mind
  19. line 8088 in src\map\pc.c if (battle_config.pk_mode&2) { ssd->status.manner -= 5; then this is everywhere in the src if(sd->status.manner < 0) clif->changestatus(sd,SP_MANNER,sd->status.manner); status.c case SC_NOCHAT: if(sd) { sd->status.manner++; clif->changestatus(sd,SP_MANNER,sd->status.manner); clif->updatestatus(sd,SP_MANNER); if (sd->status.manner < 0) { //Every 60 seconds your manner goes up by 1 until it gets back to 0. sc_timer_next(60000+tick, status->change_timer, bl->id, data); return 0; } } break; combine these 3 gets the meaning ... the manner points is hard-coded in the source-code, each time you kill another player, the manner point deduct by 5, then it start SC_NOCHAT status SC_NOCHAT duration is equal to how many manner point in negative value. eg: -3 manner point = 3 minutes SC_NOCHAT every 1 minute the SC_NOCHAT reduce by 1 until the manner gets back to 0 means if you kill a player, log out, the SC_NOCHAT will stay, it only reduce by staying log in if you want to change 5 minutes to 1 minute then change the ssd->status.manner -= 5; // change to 1 then just do like the SC_NOCHAT way if the sd->status.manner < -5, status_change_start whatever you need to have some understanding in source modification in order to do this
  20. https://rathena.org/board/topic/115925-script-ideas-for-request-taken-from-dragonnest/ yes I saw this topic before, but I don't have moderation power there so ... I'll say it here open 1 topic per request ... you are asking multiple request in the same topic the discussion can go awful if everyone just post up the script and you can't select the best answer for the topic yes everything there can be done although mostly are just normal instance script guild sign-in is daily quest world boss ... I'm in the middle of writing it ... with custom hp bar cutin
  21. now I am agreeing with you I already started making the mobevent script command ... but I found our/hercules setunitdata are mostly broken so I have to fix that one 1st ... that took me a lot of time since I have to test them case by case basis
  22. -1 on the PR itself or just the nosave mapflag suggestion ? I didn't actually put my patch into the PR yet, because I knew its cheap hack the point is ... triggering from job change quest monsters, event monsters and instance monster all sharing the same trait -> having an event label and they are in the official scripts how many lines in the official scripts you want to change if to enable monster to trigger for OnNPCKillEvent ? how many maps needed if made a custom mapflag to run OnNPCKillEvent ? the idea having loadevent mapflag to trigger OnPCLoadMapEvent should have drop long ago ... nowadays computer power is superior than before com'on you also made mission board before ... you should understand when people say killing lighthalzen mvp doesn't trigger OnNPCKillEvent but normal mobs do yes, like I said in the 1st post, it was already done that way to separate them, and it worked before long ago, but time change things
  23. Sorry, I cannot fix this unreadable script, when there are so many other invasion script release out there just by do a simple search, I have gather so many topics ... hercules http://herc.ws/board/topic/10885-help-fix-this-script-other-one-town-invasion/ http://herc.ws/board/topic/14708-help-with-npc-of-invasion/ http://herc.ws/board/topic/9487-invasion-event/#comment-55883 http://herc.ws/board/topic/1900-hercules-invasion/ http://herc.ws/board/topic/10865-help-fix-this-script-debug-town-invasion/ rathena https://github.com/llchrisll/rAthena-Scripts/blob/master/released/Entertainment/mob_inva.txt https://rathena.org/board/topic/114255-monster-invasion/ https://rathena.org/board/topic/82384-simple-town-invasion/ https://rathena.org/board/topic/101254-requesting-real-monster-invasion-script/?do=findComment&comment=282088 https://rathena.org/board/topic/69063-request-invasion-cash/ because everyone has different views on this script and everyone requesting all kinds of different features its very hard to just make a single script to satisfy everyone on the board how about you make another request topic and request exactly what want ?
  24. this means they have to do their homework well, remember ... most members download hercules emulator without fully understanding how the script works ...
  25. https://github.com/HerculesWS/Hercules/pull/2061 before understanding this pull request, let's talk about the history of OnNPCKillEvent History during the time OnNPCKillEvent implement, monster only spawn on the fields and dungeon, in this syntax ** Create a permanent monster spawn: <map name>,<x>,<y>,<xs>,<ys>%TAB%monster%TAB%<monster name>%TAB%<mob id>,<amount>,<delay1>,<delay2> and the monsters that spawned with event labels were only use in job changer quests *monster("<map name>", <x>, <y>, "<name to show>", <mob id>, <amount>{, "<event label>";} Note: if you noticed some parameter missing, yup those were added later. Notice the permanent monster spawn during that time still doesn't support event labels So, in order to trigger the permanent monster spawn, OnNPCKillEvent was the only way (during that time) this was to separate the trigger between OnNPCKillEvent and monster with event labels Why separate them ? there's a good reason to separate them, aleos also said in this issue in fact, this bug was also brought up several times during eathena ... Let's give 2 examples: Example 1: Bot-killer script Bot-killer script is intended to kill bots, and bots usually only appear on fields/dungeon which makes OnNPCKillEvent: label an ideal solution to work on them currently, Bot-Killer script doesn't trigger with job changer script or event script because the job changer npc, the monster was spawned with event labels example like priest job change quest -> you have to kill all the undeads within 5 minutes imagine ... IF the Bot-Killer script was able to trigger monster with event labels, while the players was rushing against time, suddenly a bot-killer script pops up !! this is enough to make them fail the test ... same thing goes to other event scripts such as devil square when players were busy killing monsters, trying to get the most kills, suddenly a bot-killer script pops up !! enough to make them lose the 1st place Example 2: MVP ranking script + MVP Ladder game MVP ranking script ... show the top 10 MVP hunters in your server MVP ladder game ... a game to form a party then kill MVPs inside arena currently, the MVP ranking script doesn't record the MVP kills from MVP ladder game the reason is ... the MVP ladder game spawn the MVPs with event labels ... imagine IF the OnNPCKillEvent label able to trigger monster with event label players just has to replay the MVP ladder game again and again to earn themselves the best MVP hunter ... each game adds 39 kills, so cheap !! Don't need to find MVPs on the field anymore now that's defeat the purpose of MVP hunting .... I mean the MVP ranking script So why propose the change now ? Things has changed since then, especially with the introduction of instance script since all instance monster has event labels, previously said that monster only spawn on the fields and dungeon no longer apply Take a look back at Example 2 ... the MVP ranking script currently the MVP ranking only record the MVP kills that spawn MVP tombs but it doesn't record the kills from instance ... for example Nacht Sieger or Nidhoggur's Shadow or even Lighthalzen MVP Now here's the tricky part ... Example 1: Bot-Killer If we keep it as it is, the script works fine and if let OnNPCKillEvent run event labels, bot-killer can trigger inside job change npc (BUG) Example 2: MVP ranking script + MVP Ladder game If we keep it as it is, the MVP ranking script doesn't record the MVP kills from instance script (BUG) and if allow OnNPCKillEvent run event labels, MVP ranker script record the kills from MVP ladder game (BUG) both options are not a perfect solution but there is a way to actually solve all these problem, find this line OnNPCKillEvent: replace with ... OnNPCKillEvent: if ( getmapflag( strcharinfo(PC_MAP), mf_nosave ) ) end; let ALL OnNPCKillEvent: doesn't trigger on the map that has nosave mapflag simple because, all job changer npc and event maps has nosave mapflag ... this is easy this simple solution actually solve both example's problem above .... well actually I also has another patch ready ... but not sure if this setting make things more complicated ? well ... currently still in the discussion stage ~
×
×
  • Create New...

Important Information

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