Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    247

Reputation Activity

  1. Upvote
    AnnieRuru got a reaction from skuray in Vendor Control (rewrite)   
    me start to love rewrite Emistry's script .... hehehe
    sure he don't mind
     
    Download: 2.1
    script & plugin
    plugin is meant for players can vend on top of npc
     
    look for the original topic here for description
    https://rathena.org/board/topic/84828-utility-vendor-control/
    ... but download the script here .. hahaha
     
     
  2. Upvote
    AnnieRuru got a reaction from evilpuncker in Maintenance mode   
    apparently when I test it, at'er doesn't get kick by clif->authfail_fd, but get kick by clif->GM_kick
    .
    ACMD(test) { clif->authfail_fd( sd->fd, 1 ); return true;}#test ennyenny still continue vend
     
    @kick enny
    enny got kick
    .
    since my script using clif->authfail_fd, auto-traders doesn't get kick
     
    I just made 1.3 just now, just taking this chance to rewrite the script
    nothing much change, actually
    other than make the patch more understandable for napster to convert to rathena
  3. Upvote
    AnnieRuru got a reaction from IndieRO in King of Emperium Hill   
    I think its better to have a release topic for this instead of me update the script across separate topics
     
    Download: Hercules 1.3
    Script
    Plugin for Hercules
    Download: rAthena 1.2
    Script.
    Patch for rAthena
     
    what this event do ? ( huh ? so popular script and I still need to explain ? )
    1. make a guild
    2. join this event
    3. whack the emperium
    4. defends it until times up
    hahaha ....
     
     
    How to configure the time:
    L_start: <-- the label to start the event
    change OnClock2000: into OnSat2000: to start this event on Saturday 8pm
    L_end: <-- the label to end the event
    change OnClock2030: into OnSat2030: to end this event on Saturday 8:30pm,
    effectively makes this event runs 30 minutes
     
     
    Frequently Asked Questions:
    Question : why the Guild member can hit their own Emperium ?
    Answer : because you didn't patch and recompile
    Question: there is an exploit in this event, guild master can use Emergency Recall to abuse the prize
    Answer : I already fixed it in this topic, now the prize reward will be given after the winner warp outside the map
     
     
    original topic from eathena forum
    http://www.eathena.ws/board/index.php?showtopic=174222
    yeah ... I have been fixing this script since 7 years ago
     
     
  4. Upvote
    AnnieRuru got a reaction from Yoh Asakura in Help to update this npc   
    LOL you mixed up both
     
    sql query, this one added the index
    alter table `char` add empbreak smallint(6) unsigned not null default 0 after unban_time, add index (empbreak);..
    npc/guild/agit_main.txt
    query_sql "UPDATE `char` SET empbreak = empbreak+1 WHERE char_id = " + getcharid(0);which is already correct.
    .
    ////============================//// Emp Breaking Ladder////============================prontera,155,183,4 script Emperium Ranking 722,{ .@nb = query_sql( "select name, empbreak from `char` where empbreak > 0 order by empbreak desc limit 10", .@name$, .@empbreak ); mes "^FF0000[ Emperium Ranking ]^000000"; for ( .@i = 0; .@i < .@nb; .@i++ ) mes "^0000FF"+ ( .@i +1 ) +".^000000 " + .@name$[.@i] +" - ^FF0000"+ .@empbreak[.@i] +"^000000 Break(s)"; mes " "; query_sql "select empbreak from `char` where char_id = "+ getcharid(0), .@empbreak; mes "^0000FF["+ strcharinfo(0) +"'s]^000000 Emperium Break's is ^FF0000" + .@empbreak + "^000000 Break(s)"; close;OnInit:// waitingroom "Emperium's Ranking",0; // Look on the configuration! end;}use this script
  5. Upvote
    AnnieRuru got a reaction from Skyline in Redeemer NPC / Coupon NPC / Promotional NPC   
    perfectly built script, I can only see 1 bug and 2 improvements
     
    1.
    bindatcmd "claim",strnpcinfo(3)+"::OnClaim"; bindatcmd "code",strnpcinfo(3)+"::OnEditCode";when you write an atcommand that player can usealways set charcommand level to 99 or 100
     
    its simple to reproduce
    when pvp/gvg, type '#claim <player name that you hated>' and will send a chat box on the player,
    cause him to have a moment of pause because need to type something
    yet again ... this kind of knowledge can only acquire when you have work on a live server =/
     
    2.
    so change into like this
    bindatcmd "claim",strnpcinfo(3)+"::OnClaim", 0, 100; bindatcmd "code",strnpcinfo(3)+"::OnEditCode", 99, 100;so you don't have to ( getgmlevel() < 99 ) end; 
    3.
    query_sql "SELECT `nameid`, `amount` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'", .@item, .@amt; if ( !.@item ) dispbottom "Either invalid code or the code is already claimed by other people";can be simplify as if ( !query_sql( "SELECT `nameid`, `amount` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'", .@item, .@amt ) ) dispbottom "Either invalid code or the code is already claimed by other people";
  6. Upvote
    AnnieRuru got a reaction from Nova in Chat space limitation!/Scammer avoid *Will pay for help*   
    I hope this is final one that will work
     
    patch
    src/map/clif.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/src/map/clif.c b/src/map/clif.cindex d9acf07..5b3418e 100644--- a/src/map/clif.c+++ b/src/map/clif.c@@ -9110,6 +9110,22 @@ bool clif_process_message(struct map_session_data *sd, int format, char **name_, *namelen_ = namelen; *message_ = message; *messagelen_ = messagelen;++ {+ int i, l = strlen(message);+ for ( i = 0; i <= l; i++ )+ if ( message[i] == 'xA0' )+ message[i] = 'x20'; // replace Alt+0160 into [space]+ if ( stristr( message, " " ) ) {+ clif->colormes( sd->fd, COLOR_RED, "You are only allow to type maximum of 3 spaces in a dialog." );+ return false;+ }+ if ( stristr( message, "x20x3Ax20" ) || stristr( message, "x20x3Bx20" ) ) { // type " : " OR " ; " will be blocked+ clif->colormes( sd->fd, COLOR_RED, "You can't impersonate other players !" );+ return false;+ }+ }+ return true; } plugin#include <stdio.h>#include <stdlib.h>#include <string.h>#include "../map/pc.h"#include "../map/clif.h"#include "../common/HPMi.h"#include "../common/socket.h"#include "../common/HPMDataCheck.h" // should always be the last file included! (if you don't make it last, it'll intentionally break compile time)HPExport struct hplugin_info pinfo = { "GM_impersonate", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated)};bool clif_process_message_spaces( int retVal, struct map_session_data *sd, int format, char **name_, size_t *namelen_, char **message_, size_t *messagelen_) { if ( retVal == true ) { char* message = (char*)RFIFOP( sd->fd ,4) + strnlen(sd->status.name, NAME_LENGTH-1) + 3; int i, l = strlen(message); for ( i = 0; i <= l; i++ ) if ( message[i] == 'xA0' ) message[i] = 'x20'; // replace Alt+0160 into [space] if ( stristr( message, " " ) ) { clif->colormes( sd->fd, COLOR_RED, "You are only allow to type maximum of 3 spaces in a dialog." ); return false; } if ( stristr( message, "x20x3Ax20" ) || stristr( message, "x20x3Bx20" ) ) { // type " : " OR " ; " will be blocked clif->colormes( sd->fd, COLOR_RED, "You can't impersonate other players !" ); return false; } } return true;}HPExport void plugin_init (void) { clif = GET_SYMBOL("clif"); session = GET_SYMBOL("session"); strlib = GET_SYMBOL("strlib"); addHookPost("clif->process_message", clif_process_message_spaces);}..
    as it turns out, I just have to replace Alt+0160 into [space], then just block players from typing " : " is already enough
    no need some kind of blocklist after all
  7. Upvote
    AnnieRuru got a reaction from Nova in Chat space limitation!/Scammer avoid *Will pay for help*   
    I'm more interested to know how to type those charactersAlt + ????
     
    those are actually meant for names
    use together with
    normalize_name( message, "255xA0032tx0Ax0D " );they are automatically trim into 1 single space 
    oh well
    patch
    src/map/clif.c | 7 +++++++ 1 file changed, 7 insertions(+)diff --git a/src/map/clif.c b/src/map/clif.cindex d9acf07..0118856 100644--- a/src/map/clif.c+++ b/src/map/clif.c@@ -9110,6 +9110,13 @@ bool clif_process_message(struct map_session_data *sd, int format, char **name_, *namelen_ = namelen; *message_ = message; *messagelen_ = messagelen;++ normalize_name( message, "255xA0032tx0Ax0D " );+ if ( stristr( message, "x20x3Ax20" ) || stristr( message, "x20x3Bx20" ) ) { // type " : " OR " ; " will be blocked+ clif->colormes( sd->fd, COLOR_RED, "You can't impersonate other players !" );+ return false;+ }+ return true; } plugin#include <stdio.h>#include <stdlib.h>#include <string.h>#include "../map/pc.h"#include "../map/clif.h"#include "../common/HPMi.h"#include "../common/socket.h"#include "../common/HPMDataCheck.h" // should always be the last file included! (if you don't make it last, it'll intentionally break compile time)HPExport struct hplugin_info pinfo = { "GM_impersonate", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated)};bool clif_process_message_spaces( int retVal, struct map_session_data *sd, int format, char **name_, size_t *namelen_, char **message_, size_t *messagelen_) { if ( retVal == true ) { char* message = (char*)RFIFOP( sd->fd ,4) + strnlen(sd->status.name, NAME_LENGTH-1) + 3; normalize_name( message, "255xA0032tx0Ax0D " ); if ( stristr( message, "x20x3Ax20" ) || stristr( message, "x20x3Bx20" ) ) { // type " : " OR " ; " will be blocked clif->colormes( sd->fd, COLOR_RED, "You can't impersonate other players !" ); return false; } } return true;}HPExport void plugin_init (void) { clif = GET_SYMBOL("clif"); session = GET_SYMBOL("session"); strlib = GET_SYMBOL("strlib"); addHookPost("clif->process_message", clif_process_message_spaces);}
  8. Upvote
    AnnieRuru got a reaction from luis.seifert in [Outdated] battleground system without waitingroom   
    This plugin has outdated
    Haru has already fixed queue iterator script command
    this plugin is no longer needed
     
    sample battleground script using queue iterator
    http://upaste.me/ab3022385d0127b7f
     

     
    outdated topics from eathena or rathena
    this one is more update
     
    Download: 1.5
    plugin
     
    -----------------------------------------
     
    *createbgid , , , , ;
    create a specific battleground ID, for the rest .... refer to doc
    .red = createbgid( "guild_vs3", 13,50, strnpcinfo(0)+"::Onredout", strnpcinfo(0)+"::Onreddead" );.blue = createbgid( "guild_vs3", 86,50, strnpcinfo(0)+"::Onblueout", strnpcinfo(0)+"::Onbluedead" );.-----------------------------------------
     
    *setbgid {, };
    *setbgid {, };
    player attached to the script will join the battleground team,
    but if a player name ( or account ID ) is specify, will let that player join the battleground team
     
    for debugging purposes
    this command can return positive number ( > 0 ) if the function is successful
    if it return negative :-
    -1: the battleground team haven't create yet ... has to be create with createbgid
    -2: the team already full, it reached MAX_BG_MEMBERS = 30 which can increase at srcmapbattleground.h
    -3: player not found ... happens when the input is not online or not found
    -5: the player already join the battleground ID that you specify
     
    if the player has joined battleground ID 3, and you use setbgid 5;
    this will force the player to leave battleground ID 3 and join battleground ID 5 without any notification
    ( player who same group will receive a message mention that "player xxx leaving battlefield" )
    only when the player joined bg ID 9, and use setbgid 9; then only the command return -5
    but the script will still continue running without posting any error, so don't worry
     
    setbgid 0; is equal to *bg_leave;
    and setbgid 0, "annie"; or setbgid 0, 2000000;
    will make the player "annie" ( or account id 2000000 ) leave the battleground team without using *attachrid + *bg_leave
    warpwaitingpc "guild_vs3", 0,0;for ( .@i = 0; .@i < $@warpwaitingpcnum; .@i++ )setbgid ( .@i % 2 )? .red : .blue, $@warpwaitingpc[.@i];.-----------------------------------------
     
    *getbgusers ;
    similar to getpartymember , 2; // <-- return account ID
    this will create an array "$@arenamembers" holding all the player's account ID from the battleground team
    and $@arenamembersnum is equal to bg_get_data(, 0), just like $@partymembercount
    getbgusers .red;for ( .@i = 0; .@i < $@arenamembersnum; .@i++ )getitem 501, 1, $@arenamembers[.@i];.-----------------------------------------
     
    sample script
    http://upaste.me/7de710709dbb6fa17
     
    example script for reference material
    default battleground system using waitingroom, works in clean rathena/hercules
    http://upaste.me/497010755d3295805
    this script using this custom script commands
    http://upaste.me/b2781075699b0f8d9
    you can tell it really does make the script shorter
     
     
     
  9. Upvote
    AnnieRuru got a reaction from Only4fun in [Custom battlegrounds] is it possible?   
    this should belongs to source modifications, move
     
    http://herc.ws/board/tracker/issue-7894-battlegrounds-emblem-and-guardian/
    if developer fix this bug, then I might be able to find the code for this modification ...
     
    the trick should be ... make 2 fake guild and put emblems on it
    so when battleground starts, clif send that fake guild emblem
  10. Upvote
    AnnieRuru got a reaction from Only4fun in [Custom battlegrounds] is it possible?   
    until developer fix this bug =/
    http://herc.ws/board/tracker/issue-7894-battlegrounds-emblem-and-guardian/
  11. Upvote
    AnnieRuru got a reaction from ShankS in Maintenance mode   
    @Darkpurple
    nope, this modification took me 2 full days to write, very time consuming stuffs
    go ahead and buy from roserver or cydh ... I don't care
     
    seriously, you should consider switch to hercules because I noticed you always follow my posts
     
    @THPO
    fixed in 1.0a
  12. Upvote
    AnnieRuru got a reaction from Legend in Vendor Control (rewrite)   
    I think I'm going to start a "New Script Festival" LOL
     
    I have so many scripts in my hard-disk ...
    so I just have to post them 1 at a time ... everyday ! -> keep my fan base happy
  13. Upvote
    AnnieRuru got a reaction from Tokeiburu in Suddenly missed AnnieRuru   
    just wondering ... how many people actually miss me ? XD
  14. Upvote
    AnnieRuru got a reaction from karazu in @market clone   
    I just noticed somebody in rathena actually start converting my patch into rathena ... namely Napster
    well kinda a competition then, as rathena does have more user base than hercules
     
    version 1.3 released
    plugin or patch
    -- change back all status-damage into status-kill for readability
    -- fix a bug that when a server enabled show_mob_info, the clone shouldn't has listed the hp nor level (credit: Napster)
    -- fix a bug that player shouldn't create a market clone while chatting or vending
    -- and for the patch, move all configuration into battle folder, makes more sense in this way (credit: Napster)
    -- add zeny requirement
  15. Upvote
    AnnieRuru got a reaction from Like it~* in King of Emperium Hill   
    I think its better to have a release topic for this instead of me update the script across separate topics
     
    Download: Hercules 1.3
    Script
    Plugin for Hercules
    Download: rAthena 1.2
    Script.
    Patch for rAthena
     
    what this event do ? ( huh ? so popular script and I still need to explain ? )
    1. make a guild
    2. join this event
    3. whack the emperium
    4. defends it until times up
    hahaha ....
     
     
    How to configure the time:
    L_start: <-- the label to start the event
    change OnClock2000: into OnSat2000: to start this event on Saturday 8pm
    L_end: <-- the label to end the event
    change OnClock2030: into OnSat2030: to end this event on Saturday 8:30pm,
    effectively makes this event runs 30 minutes
     
     
    Frequently Asked Questions:
    Question : why the Guild member can hit their own Emperium ?
    Answer : because you didn't patch and recompile
    Question: there is an exploit in this event, guild master can use Emergency Recall to abuse the prize
    Answer : I already fixed it in this topic, now the prize reward will be given after the winner warp outside the map
     
     
    original topic from eathena forum
    http://www.eathena.ws/board/index.php?showtopic=174222
    yeah ... I have been fixing this script since 7 years ago
     
     
  16. Upvote
    AnnieRuru got a reaction from Yugosh in change to item reward hunting mission   
    #Mission_Points
    search for it and delete every single line
    and also remove the npc shop below
  17. Upvote
    AnnieRuru got a reaction from BrothersKeeper in [Custom battlegrounds] is it possible?   
    until developer fix this bug =/
    http://herc.ws/board/tracker/issue-7894-battlegrounds-emblem-and-guardian/
  18. Upvote
    AnnieRuru got a reaction from Helena in How to do this? Don't allow @load to this town for non-castle owners   
    that was the least complex method in writing an instance script o.o 
    anyway
    prontera,158,180,0 script Guild Town 123,{ if ( !getcharid(2) ) { mes "need a guild"; close; } if ( agitcheck() || agitcheck2() ) { mes "woe in progress"; close; } if ( getcastledata( "prtg_cas01", 1 ) != getcharid(2) && getcastledata( "payg_cas01", 1 ) != getcharid(2) && getcastledata( "aldeg_cas04", 1 ) != getcharid(2) && getcastledata( "gefg_cas04", 1 ) != getcharid(2) ) { mes "you need to hold a castle to gain access to guild town map"; close; } warp "guild_vs2",49,49; end;OnAgitStart: mapwarp "guild_vs2", "prontera",150,180; end;}guild_vs2 mapflag nowarptoguild_vs2 mapflag nomemoguild_vs2 mapflag nosave SavePoint
  19. Like
    AnnieRuru got a reaction from evilpuncker in get zeny amount from new bank system   
    try this plugin
    http://upaste.me/7ba18d
     
    tested with
    prontera,155,186,7 script kldjhfksdjhf 100,{ dispbottom Zeny +" "+ bank_vault();}honestly ... developer should added a constant for this variable ...
  20. Upvote
    AnnieRuru got a reaction from kyeme in @market clone   
    people aren't saying it is a bug, so leave it then xD
  21. Upvote
    AnnieRuru got a reaction from Helena in How to do this? Don't allow @load to this town for non-castle owners   
    GmOcean gonna drool over this
    prontera,158,180,0 script Guild Town 123,{ if ( has_instance2( "guild_vs2" ) >= 0 ) { warp has_instance( "guild_vs2" ), 0,0; end; } if ( !getcharid(2) ) { mes "need a guild"; close; } if ( agitcheck() || agitcheck2() ) { mes "woe in progress"; close; } if ( getcastledata( "prtg_cas01", 1 ) != getcharid(2) && getcastledata( "payg_cas01", 1 ) != getcharid(2) && getcastledata( "aldeg_cas04", 1 ) != getcharid(2) && getcastledata( "gefg_cas04", 1 ) != getcharid(2) ) { mes "you need to hold a castle to gain access to guild town map"; close; } if ( ( .@ins = instance_create( "Guild Town", getcharid(2), IOT_GUILD ) ) < 0 ) { mes "error : "+ .@ins; close; } if ( instance_attachmap( "guild_vs2", .@ins, 1, getcharid(2)+"gtown" ) == "" ) { mes "error : 5"; instance_destroy .@ins; close; } instance_set_timeout 0, 0, .@ins; instance_init .@ins; instance_attach .@ins; .guild_town_id[.count] = .@ins; .count++; warp has_instance( "guild_vs2" ), 0,0; end;OnAgitStart: for ( .@i = 0; .@i < .count; .@i++ ) instance_destroy .guild_town_id[.@i]; deletearray .guild_town_id; .count = 0; end;}guild_vs2 mapflag nowarptoguild_vs2 mapflag nomemoguild_vs2 mapflag nosave SavePointchange guild_vs2 into guild_town
  22. Upvote
    AnnieRuru got a reaction from GmOcean in how to make patch file   
    I usually ignore this kind of post ... meh .................
     
    http://herc.ws/board/topic/152-obtaining-hercules/
     
    I wonder how are you exactly download the hercules ?
    if using tortoisegit, just right click -> Git Diff
    then select all file to patch, then save the name of the file
     
    you won't go anywhere without a tortoisegit, including making a pull request
  23. Upvote
    AnnieRuru got a reaction from luis.seifert in [Help] Battleground script   
    if you modify like jabote did, that will affect any other battleground script, which possibly caused them bug
     
    I won't touch the source if I were you
     
    the practical way to do this, is make them wait inside a room
    http://rathena.org/board/topic/97602-annierurus-bg-emp-edit-request/?p=267413
    I've seen 2 battleground script using this method
  24. Upvote
    AnnieRuru got a reaction from Only4fun in [Help] Battleground script   
    if you modify like jabote did, that will affect any other battleground script, which possibly caused them bug
     
    I won't touch the source if I were you
     
    the practical way to do this, is make them wait inside a room
    http://rathena.org/board/topic/97602-annierurus-bg-emp-edit-request/?p=267413
    I've seen 2 battleground script using this method
  25. Upvote
    AnnieRuru got a reaction from nomade in @market clone   
    Download: 1.9
    plugin
     
    Create a market clone, to leave a message for other players
    while the player can go hunting/questing/events
    @market "<Title>" "<Message>" <Color> create a market clone with a chat room titled -> "<Title>"
    when players tries to join the chat room, it refuse the joining, but instead leave a message -> "<Message>"
    with 1.4 update,
    player can now choose their own favorite color for their AFK message
    the <Color> field is optional
    I was struggling to use array for the color list ...
    but in the end, I guess the simplicity is the best
    so you guys can guess how to add in your own list easily
     
    @marketkill kill the market clone without logging off
     
    when a GM do @killmonster @killmonster2, or *killmonster *kilmonsterall script command will not remove the clone
    but @reloadscript, however, will remove it
     
    feels like I just copy paste from the description
    whatever ...
     
    Credit : remember to rep Dastgir's topic because I mostly copy his codes
     
     
×
×
  • Create New...

Important Information

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