Jump to content

Gidz Cross

Members
  • Posts

    640
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by Gidz Cross

  1. On 1/13/2024 at 12:15 PM, ChokituBR said:

     

     

    I have a simple question. Let's say I am using @Secrets script

    And I want to add this:

    https://board.herc.ws/files/file/102-hokage-sprite/

    As a 2nd option for a custom sura clothe, and oktoberfest for example for Biochemist.

     

    How can I add a new LOOK_BODY2 (A body 3)

    Look_body2 uses jobsprite_1, _2 and so on. They are also known as @bodystyle command. You can rename those custom sura and oktoberfest.

     

    On 1/13/2024 at 12:15 PM, ChokituBR said:

    And would it be possible to add palletes for this?

    Sure. But not guaranteed to have beautiful colors. Remember. Palettes are made with official job sprites.

  2. On 3/11/2024 at 8:45 PM, Questune said:

    Hi everyone, can someone help me to fix my scr_logo. I can't make it to a transparent background. Please check the attached file for my simple logo, and if someone who can make it better that would be very great and will appreciate it so much. 😊

    scr_logo.bmp 90.93 kB · 0 downloads

    To have it transparent. The background must be MAGENTA.

  3. 27 minutes ago, Tokei said:

    I'm afraid this is technically impossible. If your GRF reached 5+ GB in size, then it means you've lost data within your GRF without you knowing about it. As I mentioned above, if you go past 4 GB with your file offsets, the data wraps back to 0. The fact that your GRF loads means that the file table offset was indeed beyond the limit and is probably written right in the middle of your GRF instead of at the end of it. The file table has overwritten some of your files within your GRF and some indexes are linking to invalid data (and not by a small amount, about 1/5th of your GRF is unreadable). When that happens, the client won't be able to decompress the data as it won't be a valid zlib entry, and it will attempt to read from the next GRF listed.

    Probably. But hey it works. But i saw the flaw of it like when adding palettes and some files (well a lot actually) are being not encrypted. So I reverted to the `old setup` which is split grf's.

    But anyways, As usual thank you for keeping this project a live! I can't imagine RO without grf tool! ❤️ Thanks @Tokei!

  4. 16 minutes ago, Relzz said:

    What a great update!

    I have a small comment here,

    This is not a bug or anything, but URLs are kinda unreadable

    image.png.7d92b587137f8334e83ea993207ff963.png

     

    As an added comment, do you think its viable to allow GRFs that are bigger than 4GB? 

    The RO GRF its getting really big nowadays. Its getting really close to 4GB that im having issues when merging the GRFs but im not sure if that would be an option.

     

    I wanted to add missing resources to the official GRF and it ended up at 4GB+ so I had to split them

    I believe that link is intended via game with RO browser. But since its msgstringtable it's not connected to GRF Tool.

    As for GRF size i have made a single grf with 5gb+ in it. No problem at all. That is HD resource + HD sprites + rdata + custom palettes.. All packed in single grf.

    But this is not good. I personally like the split type.

    1 maindata
    2 translation data
    3 palettes
    4 rdata
    5 data

  5. Hi! Requesting for Corrected Sprites for NEW Expanded Jobs.

    • Rebellion (Normal + Halter Mount)
    • Star Emperor (Union)
    • Sky Emperor (Halter Mount + Union + Normal)
    • Soul Ascetic (Halter Mount + Normal)
    • Hyper Novice (Halter Mount + Normal)
    • Skinkiro + Shiranui (Halter Mount + Normal)
    • Nightwatch (Halter + Normal)
  6. 2 hours ago, ckx_ said:

    Thanks for the anecdote, but I play via Proton on Fedora without any special privileges involved. I'm not convinced process privileges are a factor, and it can occur even on a fresh client without having alt tabbed. Fullscreen vs Windowed might be a relevant thing, I'm not sure, but I want mitigation techniques that aren't tied to user behavior.

    In windows, this does happen with the things I said. 2018 clients and below have this. Not sure for the new clients.

  7. On 1/19/2024 at 7:18 PM, Dev j said:

    Hello @Gidz Cross can  you share diff patch of that?

    I did already on the previous thread.

     

    In clif.c

    	if(!pc_isinvisible(sd) && mapdata->flag[MF_PVP]) {
    		//if(!battle_config.pk_mode) { // remove pvp stuff for pk_mode [Valaris]
    			if (!mapdata->flag[MF_PVP_NOCALCRANK])
    				sd->pvp_timer = add_timer(gettick()+200, pc_calc_pvprank_timer, sd->bl.id, 0);
    			sd->pvp_rank = 0;
    			sd->pvp_lastusers = 0;
    			sd->pvp_point = 5;
    			sd->pvp_won = 0;
    			sd->pvp_lost = 0;
    		//}

    in pc.c

    	// disable certain pvp functions on pk_mode [Valaris]
    	//if( !battle_config.pk_mode && mapdata->flag[MF_PVP] && !mapdata->flag[MF_PVP_NOCALCRANK] ) {
    		sd->pvp_point -= 5;
    		sd->pvp_lost++;
    		if( src && src->type == BL_PC ) {
    			struct map_session_data *ssd = (struct map_session_data *)src;
    			ssd->pvp_point++;
    			ssd->pvp_won++;
    		}
    		//if( sd->pvp_point < 0 ) {
    			//sd->respawn_tid = add_timer(tick+1000, pc_respawn_timer,sd->bl.id,0);
    			//return 1|8;
    		//}
    	//}

     

    This will enable the timers, ranking when server is set to pk mode: 1 and doesn't warp out players when died twice.

  8. On 1/12/2024 at 11:07 AM, Dev j said:

    Add also for guildrecall/partyrecall for some gm can't do cheat on woe

    For this one, you can simply make new group id with guildrecall/partyrecall restriction. This can be set in groups.conf if your rA is old and groups.yml if latest.

    This mod is simply created to not recall/recallall players that are on special maps (example: mining map, fishing map). On the contrary. This should applied in guildrecall and partyrecall since they behave like recall and recallall. So thank you @Dev j. But this doesn't prevent GMs to use guildrecall and partyrecall.

    A new version of this file is waiting for approval.

  9. On 10/14/2019 at 11:15 AM, Emistry said:
    // https://rathena.org/board/topic/121262-custom-bring-me-event/
    
    /* 
    CREATE TABLE IF NOT EXISTS `bring_me_event` (
    	`id` int(11) unsigned NOT NULL auto_increment,
    	`aid` int(11) unsigned NOT NULL default '0',
    	`cid` int(11) unsigned NOT NULL default '0',
    	`last_ip` varchar(100) NOT NULL default '',
    	`last_unique_id` varchar(100) NOT NULL default '',
    	`time` datetime NOT NULL,
    ) ENGINE=MyISAM;
    */
    
    prontera,0,0,0	script	Sample	444,{
    	.@aid = getcharid(3);
    	.@cid = getcharid(0);
    	.@ip$ = getcharip();
    	.@unique_id$ = get_unique_id();
    	
    	query_logsql("SELECT `id`,`time` FROM `bring_me_event` WHERE `aid` = "+.@aid+" OR `last_ip` = '"+escape_sql(.@ip$)+"' OR `last_unique_id` = '"+escape_sql(.@unique_id$)+"' LIMIT 1", .@id, .@time$);
    	query_logsql("SELECT COUNT(`id`) FROM `bring_me_event`", .@size);
    	if (.@size >= .max_redeem) {
    		mes "you missed the reward, only "+.max_redeem+" players got the reward.";
    	}
    	else if (.@id) {
    		mes "You've already claimed the rewards on "+.@time$+".";
    	}
    	else {
    		mes "Bring me "+.amount+"x "+getitemname(.item_id);
    		if (countitem(.item_id) >= .amount) {
    			if (select("Okay","Cancel") == 1) {
    				delitem .item_id, .amount;
    				query_logsql("INSERT INTO `bring_me_event` (`aid`,`cid`,`last_ip`,`last_unique_id`,`time`) VALUES ("+.@aid+","+.@cid+",'"+escape_sql(.@ip$)+"','"+escape_sql(.@unique_id$)+"', NOW())");
    				getitem 501,1;
    				getitem 502,1;
    				getitem 503,1;
    				mes "you are the "+(.@size+1)+"/"+.max_redeem+" players who got the reward";
    			}
    		}
    	}
    	close;
    	
    	OnInit:
    		.item_id = 512;
    		.amount = 300;
    		.max_redeem = 200;
    		end;
    }

    you can try this.

    It works. Can you further enhance this like configurable via in game like your promo code script? Lets talk.

  10. On 10/24/2023 at 2:52 AM, Tero said:

    If your rathena is old, the ignore range part is not present so you are instead looking for this:

    if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && !battle_check_range(src, target, range)) {

    Which you replace with this:

    if(src->type == BL_PC && !battle_check_range(src, target, range)) {
    	if (ud->walktimer == INVALID_TIMER) {
    		unit_walktoxy(src, target->x, target->y, 8);
    	}

    My rA is much older than this i guess. I dont have this
     

    Quote

    if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && !battle_check_range(src, target, range)) {

    But i got this instead
     

    	// Remember the skill request from the client while walking to the next cell
    	if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && !battle_check_range(src, target, range-1)) {
    		ud->stepaction = true;
    		ud->target_to = target_id;
    		ud->stepskill_id = skill_id;
    		ud->stepskill_lv = skill_lv;
    		return 0; // Attacking will be handled by unit_walktoxy_timer in this case
    	}
    
    and
    
    	// Remember the skill request from the client while walking to the next cell
    	if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && !battle_check_range(src, &bl, range-1)) {
    		struct map_data *md = &map[src->m];
    		// Convert coordinates to target_to so we can use it as target later
    		ud->stepaction = true;
    		ud->target_to = (skill_x + skill_y*md->xs);
    		ud->stepskill_id = skill_id;
    		ud->stepskill_lv = skill_lv;
    		return 0; // Attacking will be handled by unit_walktoxy_timer in this case
    	}
    
    and finally
    
    	// Remember the attack request from the client while walking to the next cell
    	if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && !battle_check_range(src, target, range-1)) {
    		ud->stepaction = true;
    		ud->target_to = ud->target;
    		ud->stepskill_id = 0;
    		ud->stepskill_lv = 0;
    		return 0; // Attacking will be handled by unit_walktoxy_timer in this case
    	}

    Thanks!

  11. On 3/25/2023 at 10:19 PM, w0wZukuBg said:

    Hello! It's been a long time...
    But at the moment, the creation of updated sprites is completed!

    LINK TO FILE:

    https://mega.nz/file/tGFCxRSL#y5S8uLWw0cMCrLt059ycmZSeeFY1oLYTSVJwa0BoEWs

    Each sprite is hand tested and stamped inside.
    In the process of creation and testing, the version with the standard aura became irrelevant, so only the updated aura remains in the final version (like in this showcase).
    The pack now contains exactly 600 sprites.

    The last one was added single dagger version of Eremes Guile based on the sprite: md_ed_eremes.
    The sprite has been recreated in the style of standard biolab monsters with separate head, body and weapon.

    oiqpRnv.gif

    It belongs to the alternative sprites, due to the unique attack animation.
    This special one can be used on the lone Eremes Guile living on the 2nd floor of the biolab.
    Since he only has 1 dagger left, you can make him twice as weak so that low-level players are not very afraid of him.

    RubqthQ.png

     

    Thank you so much!

    • Upvote 1
    • Love 1
×
×
  • Create New...