Jump to content


  • Content Count

  • Avg. Content Per Day

  • Joined

  • Last visited

  • Days Won


iraciz last won the day on December 17 2020

iraciz had the most liked content!

Community Reputation

86 Excellent

About iraciz

  • Rank
  • Birthday February 3

Profile Information

Contact Methods

Recent Profile Visitors

7,149 profile views
  1. 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?
  2. 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),
  3. Is this normal? Why the monster keep spawming? one after another? it is suppose to be ONLY 2! Please help! my useres are complainting
  4. Several years an this still broken? Why the 2 apostoles keep spawning? in an endless cycle? Only must be !!2!!
  5. 2018 clients obsoletes now, lot of issues, not homunc AI, not linked dancer skills, and a lot more.
  6. could you share your script? I want to block that command too In bg and woe maps.
  7. 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.
  8. 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! 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" }, 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. 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. 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!
  9. 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.
  10. The skill is casting, but the musical note is not spamming on floor, no damage, no nothing, any Idea?
  11. Done.. I've spent several minutes looking for and found the flags in doc/skill.db
  12. 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
  • Create New...

Important Information

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