Jump to content

Tio Akima

Members
  • Content Count

    349
  • Joined

  • Last visited

  • Days Won

    31

Posts posted by Tio Akima


  1. On 5/13/2022 at 10:09 PM, Kian said:

    Como que se habilita a recompensa diária?Alguém poderia me ajudar?

     

    Capturar.PNG


    Na pasta \conf\map\battle\feature.conf
     

    procure por:

        // Enable Attendance System for clients >= 2018-03-07bRagexeRE or 2018-04-04bRagexe or 2018-04-11aRagexe_zero
    	// true:  enable (Default)
    	// false: disable
    	enable_attendance_system: true
    
    	// Attendance End time in the format YearMonthDay
    	feature_attendance_endtime: 20220802

    É preciso ativar e definir a data de termino do attendance.
     


  2. Hi
    I wanted help to fix this instance info window.
    This window (with the destroy button) appears when you are out of the instance saying that it is available/accessible, etc... You can even use the button to destroy and terminate the instance.

    However, this window bug completely if the time spent in the instance expires.
    When the dwell time expires, should the player be sent to out and the instance destroyed?

    With the instance destroyed, it should no longer show the window with the button and saying "available"... right? but the window bugs, and never disappears again (hahaha), and the destroy button stops working.
    Something is wrong with the function called when the dwell time in the instance expires.

     

    teste-bug.png

     

    the time out func:

    *instance_set_timeout(<alive timeout>, <idle timeout>{, <instance id>})
    
    Parameter <alive timeout> specifies the total amount of time the instance
    will exist. Parameter <idle timeout> specifies how long players have, when
    they are outside of the instance, until it is destroyed.

    <idle timeout> works perfectly. when it expires, the instance is destroyed correctly, the window disappears.


    the problem is when the <alive timeout> expires. The window bugs, the button bugs... 

    maybe it could be the func in instance.c or the clif call 


  3. 20 hours ago, Hyroshima said:

    I made this function for a friend and it can be useful in general. 

    basically allows you to add wait time for something in npc, you can put different times in the same npc using the reference names.

    a utility to put in Global_Functions

    
    //== Function F_SetNpcCD ================================
    // Add cooldown to access specific functions of a pc but not limited
    //==
    // callfunc "F_SetNpcCD","reference_name",time_in_seconds{,cooldown type};
    // Examples:
    //    callfunc("F_SetNpcCD","name_example0",45)		// Adds 45 second cooldown at player level
    //    callfunc("F_SetNpcCD","name_example1",85,1)	// Adds 1 minute 25 second cooldown at player level
    //    callfunc("F_SetNpcCD","name_example2",120,2)	// Adds 2-minute cooldown at account level
    function	script	F_SetNpcCD	{
    	set .@var$,(countstr(getarg(0)," ")?replacestr(getarg(0)," ","_"):getarg(0));
    	set .@time,getarg(1);
    	set .@type,getarg(2,0);
    	setd(""+(.@type==2?"#":"")+""+.@var$+"_time",gettimetick(2)+.@time);
    return;
    }
    
    //== Function F_GetNpcCD ================================
    // Check npc access cooldown
    //==
    // callfunc "F_GetNpcCD","name_example"{,cooldown type};
    // Examples:
    //    callfunc("F_GetNpcCD","name_example0")	// returns "NPC Cooldown: 00H:00M:45s (player)"
    //    callfunc("F_GetNpcCD","name_example1",1)	// returns "NPC Cooldown: 00H:01M:25s (player)"
    //    callfunc("F_GetNpcCD","name_example2",2)	// returns "NPC Cooldown: 00H:02M:00s (account)"
    function	script	F_GetNpcCD	{
    	set .@var$,(countstr(getarg(0)," ")?replacestr(getarg(0)," ","_"):getarg(0));
    	set .@type,getarg(1,0);
    	
    	if(gettimetick(2) < getd(""+(.@type==2?"#":"")+""+.@var$+"_time"))
    	{
    		set .@ts,getd(""+(.@type==2?"#":"")+""+.@var$+"_time")-gettimetick(2);
    		set .@h,.@ts/3600;
    		set .@m,(.@ts%3600)/60;
    		set .@s,.@ts%60;
    		dispbottom "NPC Cooldown: "+(.@h<10?"0"+.@h:.@h)+"H:"+(.@m<10?"0"+.@m:.@m)+"M:"+(.@s<10?"0"+.@s:.@s)+"s ("+(.@type==2?"account":"player")+")";
    		end;
    	}
    return;
    }

    congrats Hyro, this will help a lot of people.
    Nice func! Thanks for sharing ❤️

     


  4. hi, i made a skill to send the clone generated by the player to attack a target. (order to attack a target).
    I did a custom function, where I return the clone ID on the map.
    And so, give him an order.
    But, I do not know if it is correct to go this way, or if there is any other necessary procedure

    case CLONE_ATTACK:
    		{
    				int c = 0;
    				int clone_id = 0;
    				int maxcount = 1;
    				
    				map->foreachinmap(skill->check_condition_clone, sd->bl.m, BL_MOB, sd->bl.id, &c , &clone_id );	// clone search on the map
    				
    				//ShowWarning("clone_id: %d\n", clone_id);	//debug
    		
    					if( c < maxcount ) {	//if no clones are found
    						clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
    						map->freeblock_unlock();
    						return 0;
    					}
    				struct block_list* mbl  = map->id2bl(clone_id);		//takes the clone id and converts it to a bl
    				struct unit_data *ud = unit->bl2ud(mbl);			//take the bl and convert it to a unit
    				
    				//nullpo_ret(mbl);
    				//nullpo_ret(ud);	
    				
    				if(ud){
    					unit->set_target(ud, bl->id);					//set a target
    					unit->attack(mbl, bl->id, ud->state.attack_continue); // Execute normal attack
    					
    				}
    		}

    suggestions?

     

    @EDIT: Solved


  5. On 2/27/2021 at 6:55 PM, Lergen said:

    Pardon if this is the wrong section, it's a bit of a broad question.

     

    Is it possible to completely replace a job sprite with something else? For example, if I wanted to replace the novice so instead it's a poring or an NPC, how would you go about it? I've seen a few threads on replacing the outfits of jobs, but nothing about whether or not you can actually completely replace the job's sprite with something else. If anybody has any suggestions or an idea of where to start with something like this, or if it's even actually possible, it'd be greatly appreciated.

    Hi
    You may face some mistakes by switching a class's sprite to a monster's sprite.
    In a class sprite there are positions that a monster does not have, sitting position for example, 2 or 3 types of attacks, etc ...
    So, maybe you face some mistakes in that sense.
    A monster has 4 layouts if I'm not mistaken, a class already has between 8 or 9 ... I don't remember for sure.
    So it is necessary to pay attention to that

    Someone correct me if I'm wrong, but I'm thinking about all the functions that a class sprite has
    oh, there is the option for you to use the disguise command, isn't it interesting for you?
    you can turn the player into the monster you want

     

    perhaps it is a good option for your goal.


  6. Has anyone changed edited the daily compensations to get the awards for accounts and not for char?
    it would be nice if you had that alternative in the settings.
    Has anyone thought of this alternative?


    I think it is safer and more correct that the daily rewards are for accounts and not char.
    Thus, it avoids the player creating different characters to get the rewards. 


  7. guys, i'm using the barter shop, and even putting -1 (to sell unlimited items) he is acting like it's 1 ... and he doesn't let the player buy the item.


    Does anyone know why he is behaving this way?
    the value being -1 was for him to exchange unlimited items and not block the player from exchanging (says he doesn't have enough items to exchange)

     

    d0Q5hdm.png


  8.  

    hy guys

     

    I'm creating an instance, and I have some doubts

     

    I created the instance setup:

          //  instance create =================================================================
                        
                            if ( FYC_deny + .deny > gettimetick(2) ) {
                                mes "["+ strnpcinfo(1) +"]";
                                mes "Você não pode tentar imediatamente... Precisa de uma pausa antes de enfrenta-lo novamente.";
                                mes "Tem que esperar "+ callfunc( "timeleft__", FYC_deny + .deny - gettimetick(2) ) +".";
                                close2;
                                cutin "", 255;
                                end;
                            }
                            
                            .@instance_name$ = "Piccolo Training";        //nome da instancia
                            .@map_name$ = "1@area";                     // nome do mapa
                            
                        
                        
                            if ( has_instance2("1@area") >= 0 )
                                instance_destroy has_instance2("1@area");
                                
                            .@instance = instance_create( .@instance_name$, getcharid( 3 ), IOT_CHAR);
                                if( .@instance < 0 ) { 
                                    dispbottom "Ixe! A Instancia Falhou!";
                                    end;
                                }
                                
                            dispbottom "^0000ff" + .@instance_name$ + "^000000- Criando Instancia...";
                            if( instance_attachmap(.@map_name$,.@instance) == "" ) {
                                instance_destroy( .@instance );
                                dispbottom "Houve uma falha ao criar a Instancia...";
                                close2;
                                cutin "", 255;
                                end;
                            }    
                                                        
                            instance_set_timeout 600, 1, .@instance; // 10 minutos para matar, 1 segundos para destruir                    
                            instance_init .@instance;
    
                            percentheal 100,100;
                            FYC_deny = gettimetick(2);
                            
                            //warp has_instance("1@area"), 104,84;                        
                            warp instance_mapname("1@area",.@instance),104,84;

     

    Now, I don’t know how I can check to see if the player died, or if quit ...

    Because if that happens, you have to get the player out of there, and destroy the instance, right?

     

    how to do this?

     

    ps* oh .. and also need to check for when time is up?

     


  9. Hi guys,
    found this npc on some topics here on the forum
    it's a battle between groups, but I noticed some errors, if anyone can look ... If I'm not mistaken, this npc was edited by AnnieRuru and is called Team Wars (7vs7) group battle

     

    * after the groups register, the npc says a message and if the player doesn't close the message, the battle will never start, that is ... the player can troll a lot doing this!

     

    * after the battle is over, the winning group is stuck on the map.

    I'm not sure, but somehow the event doesn't end.

     

    * Does anyone have the sql table? I did not find.

     

    * The reset option in the admin menu does not work

     

    https://upaste.me/01845160002a5577f


  10. 3 hours ago, Cretino said:

    I think the 'problem' is the character inventory size.

    The client send the message 'You're overweight', but really you don't have space in your inventory.

    oh ... got it ... yes, that's probably it. You still have the strength to carry many things, but there is no space in the inventory .... it makes sense. ty


  11. 32 minutes ago, MikZ said:

    Do you have idea why my client crashed

    If I use my .grf my client crashes and have these  sprite error but if I just use the data folder works fine.

    00# [FAIL] sprite\¸ó½ºÅÍ\Ãʺ¸ÀÚ.act [266 ms]
    01# [FAIL] sprite\¸ó½ºÅÍ\Ãʺ¸ÀÚ.act [266 ms]
    02# [FAIL] sprite\¸ó½ºÅÍ\Ãʺ¸ÀÚ.spr [266 ms]
    03# [FAIL] sprite\¸ó½ºÅÍ\Ãʺ¸ÀÚ.spr [266 ms]


    Client crashed.

    1=my.grf
    2=palletes.grf
    3=data.grf
    4=rdata.grf

     

    Vs


    1=data (consisting all in my.grf)
    2=palletes.grf
    3=data.grf
    4=rdata.grf

     

    which path does your hexed take first?
    * read data folder first
    * read first grf

     

    when you use your data folder, the client may actually be reading the kro data.grf first to avoid causing problems ...

    well, try to change the sprite of this mob that is giving problems ...
    Alias, enter the mobs folder, and check that the monster is there and that the file is not damaged.


  12. guys

    Hi guys
    with the change of maximum level and maximum status (str, int, luk, etc ...)
    do I need to set the maximum weight too?

    sometimes it happens that the char gets heavy with only 20% of objects in the warehouse

     

    PlubFeH.png

     

    I figured that maybe the weight would adapt to the size of the force (whatever it is, str stats custom or not) 

     

    @EDIT doubt


  13. 6 hours ago, 4144 said:

    may be you changing matk outside of allowed range?

    see matk_min and matk_max in config directory for limits.

     

    hmmm ... So, I need my change to be within this rule defined in the return ? 

    return cap_value (matk, battle_config.matk_min, battle_config.matk_max);

     

    I looked in limits.conf and found these values

    // magic attack limits
    
    matk_min_limit: 0
    matk_max_limit: 65535

     

    do these values apply to the rule?
    Actually, I didn't understand how the rule works ...
    The change I make to the status_calc_matk function, can't make the matk exceed matk_max?
    Can you explain me?

     

    The change I made was this:

        if(sc->data[SC_MAXIMIZEPOWER]){ 
            skill_lv = pc->checkskill(sd,BS_MAXIMIZE);
            matk += 8 * skill_lv;
            printf("debug msg");
        }    

    is basically this:
    matk += 40;

     

    but it doesn't work ... it shouldn't exceed matk_max, I think. 😵

    I'm really confused ...
    I'm thinking that maybe I can't change the matak, just change the value of INT (and the matak will be generated automatically)

     

    I dont know...


  14. Hi guys
    my sv is from December 2019 and is not with the updated SC_ system ... so far so good ...

    However when adding some attributes in SC_MAXIMIZEPOWER, it does not work ...

     

    original code

    status->set_sc( BS_MAXIMIZE          , SC_MAXIMIZEPOWER   , SI_MAXIMIZE     , SCB_REGEN ); 

     

    my edit

    status->set_sc( BS_MAXIMIZE          , SC_MAXIMIZEPOWER   , SI_MAXIMIZE     , SCB_REGEN|SCB_AGI|SCB_DEX|SCB_STR|SCB_INT|SCB_BATK|SCB_MATK|SCB_SPEED ); 

     

    so in the status_calc_matk function I put one of the attributes to be added, increasing the magic attack according to the skill level ...

     

        if(sc->data[SC_MAXIMIZEPOWER]){    //--------------------------------------------------------------- up matak base
            skill_lv = pc->checkskill(sd,BS_MAXIMIZE);
            matk += 8 * skill_lv;
            printf("debug print ");
        }    

     

    however it did not work ... the debug print is show but the magic attack is not changed ...

     

    well ... it makes me think that maybe this is not the right function ...

    so I tried on:
    status_calc_watk
    status_calc_ematk

     

    So when the ability is activated, the result is the same ... my debug message is displayed, but the status is not changed ...

    this is funny because I added the condition in status_calc_int to add an attribute in INT and it works perfectly.

     

        if(sc->data[SC_MAXIMIZEPOWER]){  
            skill_lv = pc->checkskill(sd,BS_MAXIMIZE);
            int_ += 2 * skill_lv;
    }

     

    well ... I am not able to calculate the basic attack and the magic attack ... there is something wrong with my calculation ... maybe I am doing the wrong way.

    so ... how to correctly calculate the magic attack correctly? (and also the basic attack) 😵


  15. guys

     

    i have an array with id of some mobs collected in an area

    .@units[.@i]

    how can I do to turn calm monsters into aggressive and aggressive monsters into calm monsters.

     

    for (.@i = 0; .@i < .@count; .@i++) {         

             if (aggressive monster ){ stay calm }

             if (calm monster)  { get aggressive / apply Provoke lv 1 }

             if ( boss monster) { it is not effective }

    }


  16. 1 hour ago, Zhao Chow said:

    Delete the old prontera.mcache on trunk/pre-re/maps then reload again your prontera map on putty, turn off first your server to make it sure

    that's not it ... i did it several times before creating this topic ..

     

    but i did it again to make sure ... and it didn't solve it. 


  17. guys, I remade the mapcache of my Prontera (new prontera) ... however, when I enter the game, the server is reading the cache of the old Prontera (it seems to me that the gat's are from the old Prontera) ... i remade mapcache several times and he keeps reading the old cache ... does anyone know the source of this problem? I can't think what I might be forgetting to do..

     

     

    * The new prontera is in the data folder
    * The Mapcache plugin is reading the maps perfectly in my folder

    I thought my sv was running on renewal and the mapcache was going to the pre-re folder ... but that's not it

     

     

    ~hahahaha... It must be something stupid that I'm forgetting ...
    I always add custons maps and never had this problem with mapcache 😅


  18. 8 hours ago, Naruto said:

    no and you are still limited to the ID in the guides like you can only make BOWs that stick in the BOW hunter slot... when its within certain IDS

     

    one of my friends just uses hats for animations instead following my guide to changing equipment slot he just flipped it all aroud and now has endless amount of bows and katars while maintaining the same equipment interface

     

     

    I never understand your answers hahahahaha 😐

×
×
  • Create New...

Important Information

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