Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/18/16 in all areas

  1. GRF Editor: Encryption The Movie Hello again, rAthena, I'm Haziel. I'm a Pixel Artist and also a Scripter. (Also, you can check my work here and here, and if you ever need any Sprite/Script Service, check here! You can also add me on skype (it's on my signature)) Most of the people who know me or hired me for any kind of service know that I don't charge more than it's fair. What upsets me is the people who use my work without authorization, most of the cases, paid material that took hours, days or, sometimes, weeks to be concluded. So, hoping to protect my work, and the custom content of your servers' owners, I've decided to write a guide explaning in detail how to use @Tokei's awesome tool. 1. List of Materials • GRF Editor, if you're not familiar with this software, it is the best GRF Management Tool ever coded. • The files you want to protect, the encryption is made by file so, there's no need to encrypt the whole GRF. • Your Hexed must be 2012-04-10 or above, it won't work on 2010 Clients. • Decide your Hexed filename, it's essential for the encryption to work. 2. Generating Encryption Key GRF Editor uses a Key Encryption Method, what means that your protection is based on a password. Choose a password you'll remember or note it somewhere, you won't be able to decrypt your files without it and always save a Backup of the files you'll encrypt. Password chosen, you'll need to generate the DLL, the one that will allow your Client to read encrypted files. Open the GRF Editor and navigates on the top menu to Tools > GRF Encryption, you'll see the window below. First, Input your Key on the Encryption Password field. Next, select your Client on the Client Path field, it is needed for the DLL to be coded to its filename or be modified if needed. IMPORTANT: The Client being asked here is for the Hexed, IT IS NOT the Patcher, Launcher or Loader. The name of the DLL can also be changed, it will output a modified Hexed of ready to read it. With everything set, click in Generate File(s), and it will pop up a folder where your DLL has been generated, add/replace the one in your Client folder. 3. Encrypting Files Files can now be encrypted. Open your GRF, GPF or THOR, select the files you want to protect. Right-click it and select EncryptIon > Encrypt. Enter the Password you previously defined, confirm and the file will be highlighted in Orange. The colour might not show up when you're working on a THOR file or opens a GRF/THOR previously encrypted, that's normal behavior. Once the GRF or THOR is saved, you won't be able to read the file. Normally an error will pop, but you can test it ingame, if you've done it correctly, it will be displayed properly. As far as I've tested, the Encrypted Files works in the DATA folder if extracted. If you want to Encrypt or Decrypt a whole GRF, you can select Tools > GRF Encryption with the GRF open by the software and choose the options Encrypt GRF or Decrypt GRF. You will be asked for the Key, and then It'll run the process through the entire GRF and export it to a new folder. The same process can be made with THOR files, even if it displays any reading error, patched Encrypted files will work. I hope that's clear enough and that it may help you. Post any question you may have in the comments below and I'll try to help. My best regards, Haziel
    1 point
  2. please try this //===== Hercules Script =========================================== //= King of Emperium Hill //===== By: ======================================================= //= AnnieRuru //===== Current Version: ========================================== //= 1.1 //===== Compatible With: ========================================== //= hercules 2015-12-19 //===== Description: ============================================== //= defends the emperium in the middle of the map until times up //===== Topic ===================================================== //= http://hercules.ws/board/topic/4495-gvg-king-of-emperium-hill/ //===== Additional Comments: ====================================== //= Finally there is a topic for this ! //================================================================= - script KoE FAKE_NPC,{ OnInit: disablenpc "The King#KoE"; disablenpc "Exit#KoE"; bindatcmd "koe", strnpcinfo(0)+"::OnCommand", 99,100; // Rewards .include_offline = 0; // Include offline guild members? ( 1 = Enabled | 0 = Disabled ) setarray .Items[0],7779,1; // Item Id, Item Amount end; OnCommand: if ( compare( .@atcmd_parameters$, "on" ) ) goto L_Start; else if ( compare( .@atcmd_parameters$, "off" ) ) goto L_End; else { dispbottom "type - '@koe on' to start the event"; dispbottom "type - '@koe off' to end the event"; } end; L_Start: OnClock2015: // everyday 8pm starts if ( .start ) end; gvgon "guild_vs1"; announce "The King of Emperium Hill has begun!", bc_all; .start = true; enablenpc "The King#KoE"; disablenpc "Exit#KoE"; $koegid = 0; donpcevent "::OnRevKoE"; maprespawnguildid "guild_vs1", $koegid, 3; killmonster "guild_vs1", "KoE::OnEmpDead"; monster "guild_vs1",49,49, "EMPERIUM", EMPELIUM, 1, "KoE::OnEmpDead"; end; L_End: OnClock2045: // everyday 8:30pm ends gvgoff "guild_vs1"; announce "The King of Emperium Hill is over!", bc_all; .start = 0; enablenpc "Exit#KoE"; disablenpc "The King#KoE"; killmonster "guild_vs1", "KoE::OnEmpDead"; // maprespawnguildid "guild_vs1", $koegid, 2; // uncomment this line to kick non-owner off the map when event ends query_sql "SELECT `account_id`, `char_id` FROM `guild_member` WHERE `guild_id` = '" + $koegid + "'",.@aid,.@cid; for ( .@i = 0; .@i < getarraysize( .@aid ); .@i++ ) { if ( isloggedin( .@aid[ .@i ], .@cid[ .@i ] ) ) { if ( attachrid( .@aid[ .@i ] ) ) { if ( !checkvending() ) { for ( .@x = 0; .@x < getarraysize( .Items ); .@x+=2 ) getitem .Items[ .@x ], .Items[ .@x + 1 ]; } } } if ( .include_offline ) { for ( .@x = 0; .@x < getarraysize( .Items ); .@x+=2 ) { if ( query_sql( "SELECT `nameid` FROM `inventory` WHERE `char_id` = '" + .@cid[ .@i ] + "' AND `nameid` = '" +.Items[ .@x ]+ "'" ) ) query_sql "UPDATE `inventory` SET `amount` = `amount` + " + .Items[ .@x + 1 ] + " WHERE `char_id` = '" + .@cid[ .@i ] + "' AND `nameid` = '" +.Items[ .@x ]+ "'"; else query_sql "INSERT INTO `inventory` ( `char_id`, `nameid`, `amount`, `identify` ) VALUES ( '" +.@cid[ .@i ]+ "' , '" +.Items[ .@x ]+ "', '" +.Items[ .@x + 1 ]+ "', '1')"; } } } end; OnEmpDead: $koegid = getcharid(2); announce "The current King of Emperium Hill is the ["+ strcharinfo(2) +"] guild.", bc_all; donpcevent "::OnRevKoE"; maprespawnguildid "guild_vs1", $koegid, 2; killmonster "guild_vs1", "KoE::OnEmpDead"; sleep 500; if ( .start ) monster "guild_vs1",49,49, "EMPERIUM", EMPELIUM, 1, "KoE::OnEmpDead"; end; } // KoE Entrance doubrius,86,112,4 script The King#KoE 4_M_CHNGENERL,{ mes "[The King]"; if ( !getcharid(2) ) { mes "You must have a guild to participate in the ^FF0000King of Emperium Hill Tournament^000000."; close; } mes "Hello."; mes "Would you like to participate in the ^FF0000King of Emperium Hill Tournament^000000?"; if ( select ( "Yes", "No" ) == 2 ) close; if ( !getvariableofnpc( .start, "KoE" ) ) close; switch( rand(1,4) ){ case 1: warp "guild_vs1", 50, 88; end; case 2: warp "guild_vs1", 88, 50; end; case 3: warp "guild_vs1", 50, 11; end; case 4: warp "guild_vs1", 11, 50; end; } } // KoE Exit guild_vs1,49,56,5 script Exit#KoE 1_M_BARD,{ mes "[Exit]"; mes "See ya."; if ( getcharid(2) == $koegid ) getitem 20032,2; getitem 14232,3; getitem 20033,1; getitem 20034,3; getitem 7227,10; // configure prize here close2; warp "Save",0,0; end; } // Flags doubrius,77,108,5 script King of Emperium Hill#1::koe_flag GUILD_FLAG,{ if ( !$koegid ) end; mes "[King of Emperium Hill]"; mes "The Current King of Emperium Hill is the ["+ getguildname($koegid) +"] guild."; close; //OnInit: // Uncomment this line to make the emblem stay after @reloadscript OnRevKoE: flagemblem $koegid; end; } guild_vs1,61,49,6 duplicate(koe_flag) King of Emperium Hill#2 GUILD_FLAG guild_vs1,38,49,2 duplicate(koe_flag) King of Emperium Hill#3 GUILD_FLAG guild_vs1,49,61,0 duplicate(koe_flag) King of Emperium Hill#4 GUILD_FLAG guild_vs1 mapflag nobranch guild_vs1 mapflag nomemo guild_vs1 mapflag nopenalty guild_vs1 mapflag noreturn guild_vs1 mapflag nosave SavePoint guild_vs1 mapflag noteleport guild_vs1 mapflag gvg_noparty guild_vs1 mapflag nowarp guild_vs1 mapflag nowarpto guild_vs1 mapflag guildlock
    1 point
  3. Those are NPC IDs. They end at 999 and a new list was started at 10000. And even if it was mobs, you're trying 15000, a bit far, isn't?
    1 point
  4. The ID you selected is too high, as far as I know, currently, the IDs can be up to 3999 only. Otherwise, Source edits will be needed.
    1 point
  5. you can get some of the old client here http://svn.games-service.net/
    1 point
  6. First Part set .@killed_player$,rid2name(killedrid); for(set .@i,0;.@i < getarraysize(@killed_player$);.@i++){ set @killed_player$[.@i], .@killed_player$; set @kill_count[.@i], @kill_count[.@i] + 1; } Second Part Don't forget to use OnPCKillEvent label for(set .@i,0; .@i < getarraysize(@killed_player$);.@i++){ if(@killed_player[.@i] == .@killed_player && @kill_count[.@i] >= .feed_limit){ dispbottom "You have killed "+.@killed_player$+" too many times. Kill not counted."; end; } }
    1 point
×
×
  • Create New...