Jump to content

Timokha

Members
  • Content Count

    48
  • Joined

  • Last visited

Posts posted by Timokha


  1. 18 hours ago, naouemi said:

    Nope, increased my headgear id to 5000 and still nothing. The icon, drop, item view all works except the very equip sprite themselves.

    Tried the c_fallenangelwingear that is already on the game's grf data. Even this one doesn't show when equipped.

    That means, that you didn't patch your client or patched it incorrectly.

    You have to patch clean client with Nemo patcher and include the patch I mentioned.

    Only after this your client will show sprites with view ID after 2000.

     

    Just think,

    If view id 1991 displays, but 5000 does not display with the same conditions,

    That exactly means, that your client does have the needed patch.


  2. 3 hours ago, naouemi said:

    Everything, from the 3000-3008.  Been quadchecking all info, tried all kinds of different things. Some made errors so there's that. Figured out how things work, but this I'm stump. My only suspicion now is with the spr files itself. I'll try the built in image editor in the grf itself later.

    Patch your client with Nemo to increase max view IDs, then your sprites will be shown.

    http://nemo.herc.ws/patches/IncreaseViewID/

    Good luck. 


  3. Hello,

     

    After updating to the latest Hercules, 

    The emblems work fine in game using API server,

    But new emblems are now not displaying on the website (both bmp and gif formats).

    Old emblems, which were set before the API server has been setuped, work well.

     

    232133.png

     

    Might be script cannot convert now data from SQL to image.

    What was changed in emblem data or how it can be fixed?

    I've tried also the latest FLUX CP codes, but still no results.

     


  4. Hello all,

     

    After a few days, sometimes after a week from the start,

    The living server sometimes shows the following fatal error and the server terminates.

    Has anyone faced it? Any solutions to avoid it?

     

    [Fatal Error]: Memory manager::memmgr_alloc failed (allocating 28+5422080 bytes at script.c:4050).

     

    Script.c at line 4050 shows:

    //
    // Stack operations
    //
    
    /// Increases the size of the stack
    static void stack_expand(struct script_stack *stack)
    {
    	nullpo_retv(stack);
    	stack->sp_max += 64;
    	stack->stack_data = (struct script_data*)aRealloc(stack->stack_data,
    LINE 4050 //	stack->sp_max * sizeof(stack->stack_data[0]) );
    	memset(stack->stack_data + (stack->sp_max - 64), 0,
    			64 * sizeof(stack->stack_data[0]) );
    }

     

    fsgsgsgsg.png

     

     


  5. That works now, lots of thanks!

    Previosly I was using client 2020-04-01bRagexe,

    I've changed it to 2020-07-15bRagexe, and register button has been appeared.

    Tested it, and was able to create and to join created party from another account.

     

    The only issue is for now, the api server says the following,

    When I am trying to use search in agency. 

    [23/Apr 23:06][Warning]: Unhandled url 3: /party/search
    [23/Apr 23:06][Info]: disconnected 3: /party/search
    Quote

    image.png.dee99d12b915909b201d4389bd1415d2.png

     


  6. 5 hours ago, 4144 said:

    Only guild master should be allowed register here.

     

    what port you configured in external settings file?

    If port same with hercules api server port?

     

    Many thanks for your reply!

    I guess, you've meant only party leaders can register a new party?

    Yes, I am trying to do it as a party leader, but

    I think, I haven't properly setuped external settings file.

    My external settings as follows,

    Url = { TwitterUrl = "127.0.0.1:7121" }
    AccountLinkedUserDataUrl = {
    	Save = "127.0.0.1:7121",
    	Load = "127.0.0.1:7121"
    }
    TwitterDataUrl = {
    	Auth = "127.0.0.1:7121",
    	Upload = "127.0.0.1:7121"
    }
    EmblemDataUrl = {
    	Upload = "127.0.0.1:7121/emblem/upload",
    	Download = "127.0.0.1:7121/emblem/download"
    }

    Can you please share, how the settings for Adventure Agency should look like?


  7. Hello,

     

    Has anyone tested Adventure Agency feature?

    Register button does not appear in the agency window.

    Are there any special setups for ExternalSettings or there is another solution to solve it?

    Http service is on. 

     

    Thank you in advance. 

     

    Quote

    851119769_.png.588048ae9be23728353f99549b06abaf.png

     


  8. On 5/4/2020 at 6:02 PM, FearlesS said:

    Fixed.

     

    added SI_POEMBRAGI:    "Skill ID"

    in db\Constans.conf file.

    Hello,

    May I know exactly, what was done to make it works?

    I've added status numbers to constant DB, but nothing happens.

     

    Quote

    SI_WHISTLE:                                   70
    SI_ASSASSINCROSS:                             71
    SI_POEMBRAGI:                                 72
    SI_APPLEIDUN:                                 73
    SI_HUMMING:                                   74
    SI_DONTFORGETME:                              75
    SI_FORTUNEKISS:                               76
    SI_SERVICEFORYOU:                             77
    SI_RICHMANKIM:                                78
    SI_ETERNALCHAOS:                              79
    SI_DRUMBATTLEFIELD:                           80
    SI_RINGNIBELUNGEN:                            81
    SI_ROKISWEIL:                                 82

     


  9. Hello,

    As far as I know, guild emblems on clients version after 2019-06 is not showing.

    Is anyone using 2020-2021 clients? Does anyone have a solution for this issue?

    I really need to use fresh clients, but I cannot sacrifice guild emblems.

    Thank you. 


  10. On 12/11/2022 at 5:34 AM, meruem said:

    Any help here guys?
    Sir @Dastgir please help. 

    Hi! 

    Try this. It may work for you.

    Change your script as follows,

     

    Quote

    I want the rebirth prize to be given only after the first rebirth. And no prize will be given on the next rebirths after that.

    function getItemReward {
    	if (VAR_REBORN == 1) { return; }
    	VAR_REBORN = 1;
    	for (.@i=0 ; .@i < .size_reward; .@i += 4 ){
    		if ( !( getarg(0)&( .reward[.@i+3] ) ) ) {continue;}
    		if (rand(1,10000) <= .reward[.@i+2]){
    			mes "You Got "+.reward[.@i+1]+" "+getitemname(.reward[.@i])+" ";
    			getitem .reward[.@i], .reward[ .@i+1 ];
    		}
    	}
    	next;
    	return;
    }

    The variable "VAR_REBORN" will indicate that this character has already been reborned and skip the part, when the item must be given.

     

    Quote

    Also why expanded jobs cant rebirth? Is it possible to enable rebirth on all expanded job too?

    	setarray .add_jobs[0],Job_Rebellion,Job_Gunslinger,				// Additional Jobs, who can rebirth
    						  Job_Soul_Linker,
    						  Job_Star_Gladiator,
    						  Job_Taekwon,
    						Job_Baby_Alchemist,
    						Job_Baby_Bard;

    See above lines, I guess, if you mention the jobs you need to be reborned there in addtion, then it will work for you.

    The constants for your jobs you can find in the files: 

    Emulator\db\constants.conf


  11. Hello All,

     

    I have Charge Arrow Scroll, which calls skill "Charge Arrow".

    It costs 12 SP to use this scroll.

     

    The questions is:

    Is there any way to consume SP only after successfully use of this scroll?

    Currently it consumes SP immediately after using the scroll, even if the skill was not used or failed.

     

    Quote

    Name: "Charge Arrow Scroll"
    Type: "IT_DELAYCONSUME" 

    Script: <" itemskill AC_CHARGEARROW,1,ISF_CHECKCONDITIONS | ISF_INSTANTCAST; Sp = Sp - 12; ">

     

    Highly appreciate your help. 


  12. Hello IndieRO,

    Thanks for your reply, but I am now creating PVP zones, where monsters (including mini-mvp) also spawns.

    I am trying to do so, if the player kills the mob, another player (if nearby) can pick up the drops without any delay, BUT it must not be applied to all the server maps, but only for my special PVP maps, where I use "Loadevent" mapflag, as example. 

    4 hours ago, IndieRO said:

    what goal do you want
    maybe you can change drop mob via script command 
     

    use this

     

    *makeitem(<item id>, <amount>, "<map name>", <x>, <y> {,<showdropeffect>})
    *makeitem("<item name>", <amount>, "<map name>", <x>, <y>)

    This command will create an item lying around on a specified map in the
    specified location.

        item id/name    - Found in 'db/(pre-)re/item_db.conf'
        amount          - Amount you want produced
        map name        - The map name
        y               - The x coordinate
        y               - The y coordinate.
        showdropeffect  - enable pillar effect on the dropped item (default: 0)

    Yes, thank you again, I think, it will also work, but it will consume many hours to make these script drops for more than 100+ mobs.

    BTW, if I use "makeitem" with OnMyMobDead label, how can I find the coordinates of dead mob?

    Previosly i've tried it, the item was created near the player, not the monster.

     


  13. Hello All,

     

    I'm wondering, if anyone has a solution, how to disable (set to 0) the time during which only the person who did the most damage to a monster can get the item for specific maps.

     

    In "drops.conf" I have "item_first_get_time: 3000", but I need to set it to 0 only for maps with mapflag "loadevent".

     

    I have the following script, but not sure to where I could set it in right way to make it works, if it is even possible.

    Quote

    if(map->list[src->m].flag.loadevent){
    // set time to 0
    }

     

    Thank you in advance. 🙏


  14. 1 hour ago, Hyroshima said:

    //Add a call function in item // callfunc "Boxx"; function script Boxx { //Item ID //== setarray .@ItemID[0],1108,2104,5011,2301,2404; setarray .@itemRF[0], 10, 10, 10, 7, 10; //check if you still have an item with a refine lower than 10 //== for(set .@i,0; .@i<getarraysize(.@ItemID); set .@i,.@i+1) if((getd("eqi_"+.@ItemID[.@i])-1) < .@itemRF[.@i]) setarray .@equips[getarraysize(.@equips)],.@ItemID[.@i]; //All max refined //== if(!getarraysize(.@equips)){ dispbottom "Bye bye."; end; } set .@idx,rand(getarraysize(.@equips)); set .@slot,getiteminfo(.@equips[.@idx],ITEMINFO_LOC); switch(.@slot) { case 2: set .@slot,EQI_HAND_R; break; case 16: set .@slot,EQI_ARMOR; break; case 32: set .@slot,EQI_HAND_L; break; case 64: set .@slot,EQI_SHOES; break; case 256: set .@slot,EQI_HEAD_TOP; break; } if(getd("eqi_"+.@equips[.@idx])) { if(!countitem(.@equips[.@idx])){ dispbottom "Item not found "+getitemname(.@equips[.@idx])+"!"; end; } if(getequipid(.@slot) != .@equips[.@idx]) equip .@equips[.@idx]; successrefitem .@slot; setd "eqi_"+.@equips[.@idx],getd("eqi_"+.@equips[.@idx])+1; } else { setd "eqi_"+.@equips[.@idx],1; getitem .@equips[.@idx],1; } end; }

    
    //Add a call function in item
    // callfunc "Boxx";

    I haven't tested it, check if it will work as you wanted.

    It perfectly works!

    Thanks a lot for your time and help! 🙏🙏🙏


  15. On 5/13/2022 at 1:29 PM, Hyroshima said:

    I made this model as you explained how it works.

     

    //Add a call function in item // callfunc "Boxx"; function script Boxx { //Item ID //== setarray .@ItemID[0],1108,2104,5011,2301,2404; //check if you still have an item with a refine lower than 10 //== for(set .@i,0; .@i<getarraysize(.@ItemID); set .@i,.@i+1) if((getd("eqi_"+.@ItemID[.@i])-1) < 10) setarray .@equips[getarraysize(.@equips)],.@ItemID[.@i]; //All refined +10 //== if(!getarraysize(.@equips)){ dispbottom "Bye bye."; end; } set .@idx,rand(getarraysize(.@equips)); set .@slot,getiteminfo(.@equips[.@idx],ITEMINFO_LOC); switch(.@slot) { case 2: set .@slot,EQI_HAND_R; break; case 16: set .@slot,EQI_ARMOR; break; case 32: set .@slot,EQI_HAND_L; break; case 64: set .@slot,EQI_SHOES; break; case 256: set .@slot,EQI_HEAD_TOP; break; } if(getd("eqi_"+.@equips[.@idx])) { if(!countitem(.@equips[.@idx])){ dispbottom "Item not found "+getitemname(.@equips[.@idx])+"!"; end; } if(getequipid(.@slot) != .@equips[.@idx]) equip .@equips[.@idx]; successrefitem .@slot; setd "eqi_"+.@equips[.@idx],getd("eqi_"+.@equips[.@idx])+1; } else { setd "eqi_"+.@equips[.@idx],1; getitem .@equips[.@idx],1; } end; }

     

    Hello Hyroshima,

    Many thanks for your assistance, that works awesome, as I needed! 😍

     

    May you please also advise, what can I change in the script (or add to it),

    if I need to change maximum refinement level for one of our listed equipement?

    I mean, to make the maximum equipment refinement with the script as follows:

    1. Helmet +7

    2. Armor +10

    3. Boots +10

    4. Sword +10

    5. Shield +10

     

    I guess, I have to add additional condition here:

    	//check if you still have an item with a refine lower than 10
    	//==
    	for(set .@i,0; .@i<getarraysize(.@ItemID); set .@i,.@i+1)
    		if((getd("eqi_"+.@ItemID[.@i])-1) < 10) setarray .@equips[getarraysize(.@equips)],.@ItemID[.@i];

    I tried something like this, to check variable name (for +10 and +7 equipment), but it doesnt work properly..

    	for(set .@i,0; .@i<getarraysize(.@ItemID); set .@i,.@i+1)
    		if((getd("eqi_"+.@ItemID[.@i])-1) < 10 && "eqi_"+.@ItemID[.@i] != "eqi_5011") setarray .@equips[getarraysize(.@equips)],.@ItemID[.@i];
    		if((getd("eqi_"+.@ItemID[.@i])-1) < 7 && "eqi_"+.@ItemID[.@i] == "eqi_5011") setarray .@equips[getarraysize(.@equips)],.@ItemID[.@i];

    So I just wanna check, if I can refine with the script all items (+10), except for helmet (which stops at +7). 🙏

     


  16. 16 minutes ago, Hyroshima said:

    Sorry but it's still a little confusing for me to understand.

    let's do it like this, tell me what you want the script to do, so that instead of looking for a solution for this model you mentioned, I can create one without using your base.

    🙂

    Heh... 🤣

    Ok, I need to create an item - "BOX".

    When the player opens the BOX, he receives one of five items (randomly):

    1. Helmet

    2. Armor

    3. Boots

    4. Sword

    5. or Shield

     

    Next time, if the player opens the BOX and receives the same item,

    This item refines to next level +2, if again +3, and so up to level +10.

    Quote

    IMAGINE: First you opened the BOX and randomly received a shield.

    Next time you open this BOX, you CANNOT NOT receive the second shield, 

    but your existed shield refines to level +2.

    We setup, that the player ALWAYS use this shield and not another.

     

    After using the BOX several times, you may have the following equipment:

    1. Helmet +5

    2. Armor +2

    3. Boots +1

    4. Sword +3

    5. or Shield +10

     

    And now HERE, I want to see the following,

    Quote

    IMAGINE: You opened the BOX many times, and now have a shield +10.

    When you open the box again, you can recieve (upgrade refinements) only for:

    1. Helmet +5

    2. Armor +2

    3. Boots +1

    4. Sword +3

    Cause your shield is already +10

     

    And finally, if you have all equipment with refinement level 10:

    1. Helmet +10

    2. Armor +10

    3. Boots +10

    4. Sword +10

    5. or Shield +10

     

    The system just shows you, 

    dispbottom "Bye bye.";

     

    Yeah, I understand, that it's sound a bit ridiculous, but

    it's cause I am trying to create a new mode of gaming in RO 🤣

    In addition I mean, that only at the first step in all the cases you receive an item, at all another steps you receives only refinements for this item (equipment).


  17. 5 hours ago, Hyroshima said:

    tell me a little more about it, I need to understand the reason and why you will call again and again until the 5 cases are completed.

    so that I can make a suitable solution for the situation.

    Hyroshima, many thanks for your reply.

    Sure will share more details.

     

    I am working on script-function that will be called from an item.

    {
    	Id: 30000
    	AegisName: "XXXX"
    	Name: "Box"
    	Type: "IT_USABLE"
    	Script: <" callfunc "MY_FUNCTION"; ">
    },

    The main idea, why I do not use "getrandgroupitem", cause inside any case I have 10 event-levels.

    At the first level, the player will get an equipment (as example),

    and at the next levels from 2 to 10, the player's equipment will be refined.

    Each case has different type of equipment (to get and refined).

    Below you can find "case 0" sample,

    			case 0: 
    				if ( CASE0_ITEM == 0 ) {
    					set CASE0_ITEM,1;
    					getitem EQUIPMENT_0,1;
    					dispbottom "[SYSTEM] You've just received EQUIPMENT_0.";
    					end;}
    				if ( CASE0_ITEM == 10 ) {
    					// Here I have to stop producing refine levels
    					// And jump to another "cases" if available,
    					// cause my equipment reached the max level
    					end;}
    				set (CASE0_ITEM,CASE0_ITEM+1);
    				// REFINE FUNCTION HERE
    				dispbottom "[SYSTEM] Your EQUIPMENT_0 has been refined to LEVEL '" + CASE0_ITEM + "'.";
    				end;

    So I am seeking for solution, how to stop random calling "case 0", if variable "CASE0_ITEM" reached value 10. 

     


  18. Hi All !

     

    I have a simple script-function, which randomly triggers different events.

     

    I am searching for a solution to make the following,

     

    if the event from "case 0" (or another cases) is ALREADY triggered with this function,

    then next time this function will call another random event except for "case 0" or another. 

     

    Example (in random): case 3 -> case 1 -> case 2 -> case 5 -> case 0.

    None of these cases is repeated.

     

    After all I have to see the following,

     

    After using this function 5 times all 5 events have been randomly used (only once),

    and in the end the function calls another event, which will define, that all 5 events finally triggered.

    function	script	MY_FUNCTION	{
    
    		switch( rand(5) ) {
    			case 0: 
    				//do that;
    				end;
    			
    			case 1: 
    				//do that;
    				end;
    			
    			case 2: 
    				//do that;
    				end;
    				
    			case 3: 
    				//do that;
    				end;
    			
    			case 4: 
    				//do that;
    				end;
    		}
    }

    I was thinking to use variables for each "case", but don't know, how to exclude the "case",

    when the script goes through "rand" function. I have to save triggering these events in random order.

    		switch( rand(5) ) {
    			case 0: 
    				//do that;
    				set CASE_0_USED, 1;
    				end;

    Any suggestions please?

     

    Thank you. 

×
×
  • Create New...

Important Information

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