Jump to content

iraciz

Members
  • Posts

    544
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by iraciz

  1. On 12/27/2021 at 10:35 PM, danteviscount71 said:

    hello everyone, im newbie in this forum also newbie about programing, can some one help me how to add translation onto my ragnarok file? its need a program or i just need to copy and paste? thanks everyone before

    download tortoise svn

    create folder: ROenglishRE

    left click to that folder, Svn checkout

    paste to the url box:
    https://github.com/llchrisll/ROenglishRE


    Ok, and download. 

    add those files "the Data folder"  into a custom grf, with your clientinfo. repack, and run the exe.

    The system folder is for your client folder, not to the grf.

  2. Almost 2 years off.. what's new regarding rAthena? 

    Any stable client? With the visual effects for the robes? 2021...

    How difficult now? Is to edit mob and items.yml? Must be a lot of pain to add new stuff.

    What about the battlegrounds? Are 100% functional?

    And the 4th jobs, skills, gears, data, pallettes, is everything implemented? 

    I'm thinking about open a new server. After several years off, I'm a little rusty.

     

     

     

     

     

  3. I need to revert some changes and make arow shower, charge arrow, bowling bash or phantasmic arrow, knock off players from Pneuma

    In battle.c  I applied the previous code

    	if( sc->data[SC_PNEUMA] && (d->flag&(BF_MAGIC|BF_LONG)) == BF_LONG ) {
    		d->dmg_lv = ATK_BLOCK;
    		skill_blown(src,target,skill_get_blewcount(skill_id,skill_lv),-1,0);
    		return false;
    	}
    	return true;
    }

    But when compiling, I'm having this error:

     1>------ Operación Compilar iniciada: proyecto: map-server, configuración: Release Win32 ------
    1>battle.cpp
    1>C:\Users\Mario Zicari\Desktop\rAthena\src\map\battle.cpp(1062,69): error C2664: 'short skill_blown(block_list *,block_list *,char,int8,e_skill_blown)': el argumento 5 no puede convertirse de 'int' a 'e_skill_blown'
    1>C:\Users\Mario Zicari\Desktop\rAthena\src\map\battle.cpp(1062,68): message : La conversión a tipo de enumeración requiere una conversión explícita (static_cast, conversión de estilo de C o conversión de estilo de función)
    1>C:\Users\Mario Zicari\Desktop\rAthena\src\map\skill.hpp(541,7): message : vea la declaración de 'skill_blown'
    1>Compilación del proyecto "map-server.vcxproj" terminada -- ERROR.
    ========== Compilar: 0 correctos, 1 incorrectos, 8 actualizados, 0 omitidos ==========

    Please, could you help me with the code to work with no errors?

  4. Please try mine instead and compile in release mode

    attcommand.c

    /*==========================================
    * @whosell - List who is vending the item (amount, price, and location).
    * revamped by VoidLess, original by zephyrus_cr
    *------------------------------------------*/
    ACMD_FUNC(whosell)
    {
    	char item_name[100];
    	int item_id = 0, j, count = 0, sat_num = 0;
    	int s_type = 1; // search bitmask: 0-name,1-id, 2-card, 4-refine
    	int refine = 0,card_id = 0;
    	bool flag = 1; // place dot on the minimap?
    	struct map_session_data* pl_sd;
    	struct s_mapiterator* iter;
    	unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0;
    	struct item_data *item_data;
    	static char atcmd_output[CHAT_SIZE_MAX];
    
    	if (!*message) {
    		clif_displaymessage(fd, "Use: @whosell <item_id> or @whosell <name>");
    		return -1;
    	}
    	if (sscanf(message, "+%d %d[%d]", &refine, &item_id, &card_id) == 3){
    		s_type = 1+2+4;
    	}
    	else if (sscanf(message, "+%d %d", &refine, &item_id) == 2){
    		s_type = 1+4;
    	}
    	else if (sscanf(message, "+%d [%d]", &refine, &card_id) == 2){
    		s_type = 2+4;
    	}
    	else if (sscanf(message, "%d[%d]", &item_id, &card_id) == 2){
    		s_type = 1+2;
    	}
    	else if (sscanf(message, "[%d]", &card_id) == 1){
    		s_type = 2;
    	}
    	else if (sscanf(message, "+%d", &refine) == 1){
    		s_type = 4;
    	}
    	else if (sscanf(message, "%d", &item_id) == 1 && item_id == atoi(message)){
    		s_type = 1;
    	}
    	else if (sscanf(message, "%99[^\n]", item_name) == 1){
    		s_type = 1;
    	if ((item_data = itemdb_searchname(item_name)) == NULL){
    		clif_displaymessage(fd, "Not found item with this name");
    		return -1;
    	}
    		item_id = item_data->nameid;
    	} else {
    		clif_displaymessage(fd, "Use: @whosell <item_id> or @whosell <name>");
    		return -1;
    	}
    
    	//check card
    	if(s_type & 2 && ((item_data = itemdb_exists(card_id)) == NULL || item_data->type != IT_CARD)){
    		clif_displaymessage(fd, "Not found a card with than ID");
    		return -1;
    	}
    	//check item
    	if(s_type & 1 && (item_data = itemdb_exists(item_id)) == NULL){
    		clif_displaymessage(fd, "Not found an item with than ID");
    		return -1;
    	}
    	//check refine
    	if(s_type & 4){
    		if (refine<0 || refine>10){
    			clif_displaymessage(fd, "Refine out of bounds: 0 - 10");
    			return -1;
    		}
    		/*if(item_data->type != IT_WEAPON && item_data->type != IT_ARMOR){
    			clif_displaymessage(fd, "Use refine only with weapon or armor");
    			return -1;
    		}*/
    	}
    	iter = mapit_getallusers();
    	for (pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter)) 
    	{
    	if (pl_sd->vender_id ) {	 // check if player is vending
    		for (j = 0; j < pl_sd->vend_num; j++) {
    			if ((item_data = itemdb_exists(pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid)) == NULL)
    				continue;
    			if(s_type & 1 && pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid != item_id)
    				continue;
    			if(s_type & 2 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) ||
    					(pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] != card_id &&
    					pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] != card_id &&
    					pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] != card_id &&
    					pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] != card_id)))
    				continue;
    			if(s_type & 4 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine != refine))
    				continue;
    			if(item_data->type == IT_ARMOR)
    				snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %s[%d] | Price %ud | Amount %d | %s[%d,%d] | %s",pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine
    					,item_data->jname
    					,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0]
    					,pl_sd->vending[j].value
    					,pl_sd->vending[j].amount
    					,mapindex_id2name(pl_sd->mapindex)
    					,pl_sd->bl.x,pl_sd->bl.y
    					,pl_sd->message);
    			else if(item_data->type == IT_WEAPON)
    				snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %s[%d,%d,%d,%d] | Price %ud | Amount %d | %s[%d,%d] | %s",pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine
    					,item_data->jname
    					,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0]
    					,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[1]
    					,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[2]
    					,pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[3]
    					,pl_sd->vending[j].value
    					,pl_sd->vending[j].amount
    					,mapindex_id2name(pl_sd->mapindex)
    					,pl_sd->bl.x,pl_sd->bl.y
    					,pl_sd->message);
    			else
    				snprintf(atcmd_output, CHAT_SIZE_MAX, "%s | Price %ud | Amount %d | %s[%d,%d] | %s",item_data->jname
    					,pl_sd->vending[j].value
    					,pl_sd->vending[j].amount
    					,mapindex_id2name(pl_sd->mapindex)
    					,pl_sd->bl.x, pl_sd->bl.y
    					,pl_sd->message);
    			if(pl_sd->vending[j].value < MinPrice) MinPrice = pl_sd->vending[j].value;
    			if(pl_sd->vending[j].value > MaxPrice) MaxPrice = pl_sd->vending[j].value;
    			clif_displaymessage(fd, atcmd_output);
    			count++;
    			flag = 1;
    		}
    			if (flag && pl_sd->mapindex == sd->mapindex) {
    				clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, ++sat_num, 0xFFFFFF);
    				flag = 0;
    			}
    		}
    	}
    	mapit_free(iter);
    	if(count > 0) {
    		snprintf(atcmd_output, CHAT_SIZE_MAX, "================== Found %d entries. ==================", count, MinPrice, MaxPrice);
    		clif_displaymessage(fd, atcmd_output);
    	} else
    		clif_displaymessage(fd, "Nobody is selling it now.");
    
    	return 0;
    }

     

    Dont forget to add:

            ACMD_DEF(whosell),    

  5. On 1/27/2020 at 9:31 PM, Frost Diver said:

    Sorry, let me rephrase

    I need @autopot to block usage in pvp,gvg and woe map. Other map are fine. Can be used normally. I saw a script that block @storage to be used in certain maps. But i dont have any idea how to edit that to work for @autopot just like what i want. I dont need @storage because that command is disabled in my server. Just use @storage script as my guidance to edit. But still, i have no idea..

     

    Yes, im using rathena provided autopot. Ok mate, i'll that. Thanks

     

    okay mate. It worked. Thanks alot 

    could you share your script? I want to block that command too In bg and woe maps.

  6. On 10/10/2020 at 11:09 AM, AnnieRuru said:

    simple, why not just disable `@autopot` in a pvp/gvg/battleground maps ?
    save a lot of time doing so

    after all I think autopot feature should only use on pve = player vs monsters, its broken in player vs player situations

    Hi dear AnnieRuru, I'm happy to see you back here, could you guide me please, how to disable that comamand in those maps?

    remember that this command is binded via script and not by flag.

     

  7. This is Damm messed Up....

    the first stage mobs are spawning continuously even after defeating the first two

    CONFIRMED!!!!! MY USERS SEND ME THIS SCREENSHOT WITH THE ISSUE!

    Temple.thumb.png.2faf41a721477540aa04a45ab36942db.png

     

     

    FIRST:
    - The first two announcements are not displayed when entering the map! I suspect those are trigered just after generating the instance and not when the party leader put a foot in that map! 


    instance_id(), "[Temple of Demon God] Eliminate the Demon God's Apostles, Ahat and Shnaim.",bc_map,0x00ff99;
    sleep 1500;
    instance_announce instance_id(), "[Temple of Demon God] Then collect their Souls. Those are the key to open the Temple.",bc_map,0x00ff99;

    From this part!:

    OnInstanceInit:
    	set [email protected]$, strnpcinfo(4);
    	//disable unused npcs for now
    	disablenpc instance_npcname( "tdgWarp#1" );
    	disablenpc instance_npcname( "tdgWarp#2" );
    	disablenpc instance_npcname( "tdgWarp#3" );
    	disablenpc instance_npcname( "tdgWarp#4" );
    	disablenpc instance_npcname( "tdgWarp#5" );
    	
    	set 'instance_tdg_level, 0;
    	set .max_tdg_level, 6;
    	
    	set .moroccId, -1;
    	
    	instance_announce instance_id(), "[Temple of Demon God] Eliminate the Demon God's Apostles, Ahat and Shnaim.",bc_map,0x00ff99;
    	sleep 1500;
    	instance_announce instance_id(), "[Temple of Demon God] Then collect their Souls. Those are the key to open the Temple.",bc_map,0x00ff99;

    Any Idea how to send those broadcast once Inside the map? and Not once the instance init? Because those are sent before the party arrives the instance map, causing players to lose instructions on what to do

    Maybe is In wrong Order, because I made a @reloadscript while in instance  and then it shows the messages, and that is because I was in the map, But when I enter from a diferent map those messages are not even displayed in my regular chat display box. 

    SECOND:    Where is AHAT?

    He/She/It Should appear,to challenge the party to desist from continuing the incursion to the temple, then Hide himself, and then goes the Apostoles spawns... but because of the first point.. everything happens before the people arrive into the map.

    Also give this quest to the leader, and this quest should be removed if the instance is destroyed:

        [7596] = {
            Title = "Qualifications of the Guests",
            Description = {
                "To enter the Temple of the Demon God, you need a key. Defeat Gatekeeper Ahat and Shnayim, and use their souls to open the temple entrance."
            },
            Summary = "1 Ahat's Soul, 1 Shnayim's Soul"
        },

    ukjh.thumb.png.d599e8806988d0a994227a0161c4f535.png

    THIRD:    Where are the Effects?
    The Soul Globe should spawn this effect continously when the two apostoles are defeated,
    EF_SPHERE;
    and turn the effect off once the temple door is opened, Also once the door Is opened for the instance duration, This menu should be skipped and not showed again and again and again every time it triggers the ontouch label.

    Also the leader can be able to open it's dialog by clicking on it, and not only Triggering it  on touch.
    ukjh.png.b0c2178b399d147e69890ff9e3f0783a.png

    Where is the Warp Portal effect to the center of this map? 
    It says the Door was opened... But Bro! AT LEAST Display a warp portal effect, so the players will know that they should step there, and not guessing or loosing time  wandering around whitout knowing.

    ukjh.thumb.png.3857a47adb9bded62e814e14739f61be.png

    FOURTH:  THE QUEST'S
    Abidal sprite is 4_M_SAGE_C    or    ID 755

    Since there's no quest cooldown, a new one can be taken imediately after being completed.!

    Making this dialog in script useless:

    	else
    	{
    		mes "Now that we've taken care of the main body, we can take things slow.";
    		mes "Why don't you go rest for now? Leave the rest to us.";
    	}
    	cutin "", 255;
    	close;

    The correct way is to give a new quest for the cooldown, to make use of that dialoge. Once passed the time, the player can take again the hunting quest.

    Also the original quest id's are those and already exist in client luafiles and emulator yml files:

      - Id: 7594
        Title: Frost Spider and Fire Wolf
        Targets:
          - Mob: MM_BRINARANEA
            Count: 1
          - Mob: MM_MUSPELLSKOLL
            Count: 1
      - Id: 7597
        Title: Fall of the False God
     

    Ongoinquestinfolist.lub:
     

    	[7597] = {
    		Title = "Fall of the False God",
    		Description = {
    			"You defeated Demon God Morocc, who wanted to create a new world and play God. Report to Commander Hiva Agip."
    		},
    		Summary = "Report to the Commander",
    		NpcSpr = "4_M_REDSWORD",
    		NpcNavi = "moro_vol",
    		NpcPosX = 108,
    		NpcPosY = 88,
    		RewardEXP = "1000000",
    		RewardJEXP = "500000",
    		RewardItemList = {
    			{ ItemID = 22567, ItemNum = 1 }
    		}
    	},
    	[7598] = {
    		Title = "Caged God",
    		Description = {
    			"Confined in his own world, the Demon God is cursed to suffer for eternity. Come back tomorrow and put him out of his misery once more."
    		},
    		Summary = "Come back tomorrow"
    	},


    PLEASE PROVIDE AND SHARE CONTENT TO THE USERS WITH THE CORRECT STUFF!

  8. How to check this status via script?

    PCBLOCK_SKILL

    I'm using this line in autopot script to disable it in WoE, and it is working.

    OnStart:
    if (agitcheck() || agitcheck2()) {dispbottom "[Autopot Disabled During WoE Time.]";
    end;
    }


    But, In a custom Battleground, when a player carries a Flag or a Stone, they can still consume the autopot item, 

    when that happen, this status is triggered:
    setpcblock(PCBLOCK_SKILL|PCBLOCK_COMMANDS|PCBLOCK_USEITEM,true);
     

    Is possible to check the status? and end the script of the autopot? something like this?:

    if PCBLOCK_SKILL {dispbottom "[Autopot disabled at your current condition.]";
    end;
    }

    Thanks in advance.

     

     

  9. Solved, 

    CastDelayFlags:
    IgnoreStatus: true
    IgnoreItemBonus: true

    NOTE:

    The default structure of Sonic Blow Skill comes without cooldown, so the castdelay flags are useless!, unless you add a cooldown to force a delay and avoid the skill being casted twice or triple in an instant.

    Cooldown: 1000

    example:

      - Id: 136
        Name: AS_SONICBLOW
        Description: Sonic Blow
        MaxLevel: 10
        Type: Weapon
        TargetType: Attack
        Range: 1
        Hit: Multi_Hit
        HitCount: -8
        Element: Weapon
        CopyFlags:
          Skill:
            Plagiarism: true
            Reproduce: true
            RemoveRequirement: true
        AfterCastActDelay: 2000
        AfterCastWalkDelay: 2000
        Cooldown: 1000
        Duration2: 5000
        CastDelayFlags:
          IgnoreStatus: true
          IgnoreItemBonus: true
        Requires:
          SpCost:
            - Level: 1
              Amount: 16
            - Level: 2
              Amount: 18
            - Level: 3
              Amount: 20
            - Level: 4
              Amount: 22
            - Level: 5
              Amount: 24
            - Level: 6
              Amount: 26
            - Level: 7
              Amount: 28
            - Level: 8
              Amount: 30
            - Level: 9
              Amount: 32
            - Level: 10
              Amount: 34
          Weapon:
            Katar: true

     

  10. Good day,

    My users are complainting the sonic blow behaviour in poem of bragi, assassi cross can cast 2 or even 3 sonics at once, because the skill is being affected by poem, and cast delay reduce gear, please how can I make sonic blow delay not be affected by songs or gears?  

    here's the skill structure:

      - Id: 136
        Name: AS_SONICBLOW
        Description: Sonic Blow
        MaxLevel: 10
        Type: Weapon
        TargetType: Attack
        Range: 1
        Hit: Multi_Hit
        HitCount: -8
        Element: Weapon
        CopyFlags:
          Skill:
            Plagiarism: true
            Reproduce: true
        AfterCastActDelay: 2000
        AfterCastWalkDelay: 2000
        Duration2: 5000
        CastDelayFlags:
          IgnoreStatus: true
        Requires:
          SpCost:
            - Level: 1
              Amount: 16
            - Level: 2
              Amount: 18
            - Level: 3
              Amount: 20
            - Level: 4
              Amount: 22
            - Level: 5
              Amount: 24
            - Level: 6
              Amount: 26
            - Level: 7
              Amount: 28
            - Level: 8
              Amount: 30
            - Level: 9
              Amount: 32
            - Level: 10
              Amount: 34
          Weapon:
            Katar: true

     

  11. Good day Dear members...

    As the tittle say's

    What is this skill for? it's Passive and was inherit from a pair of shoes that i got in  box  of halloween.

    I can't find any information about this skill in any official Site!

    sample2.png.fe7d86c44c14acc8384e854677bd5ff2.png

    I need answers, how do this skills works, benefits, what triggers it, etc! please... 

×
×
  • Create New...

Important Information

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