Jump to content

iraciz

Members
  • Posts

    562
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by iraciz

  1. this is gold, I still use this solution nowadays
  2. Still getting those warnings, but not harmfull. thankyou
  3. Hello I implemented this code to broadcast mvp respawns. scr/map/mob.cpp md->spawn_timer = INVALID_TIMER; mob_spawn(md); Under this line I placed: // if monster boss -> do announce if( md->spawn->state.boss ) { char message[128]; sprintf(message, "[MVP Spawn]: %s has been spawned on %s map.", md->name, map_mapid2mapname(md->spawn->m)); clif_broadcast(&md->bl, message, strlen(message) + 1, BC_DEFAULT, ALL_CLIENT); } } return 0; It's working fine, MvP Respawns are being broadcasted, but now may I now is there any way to get rid of some console warnings? 1>mob.cpp 1>C:\Users\mario\Desktop\rAthena \src\map\mob.cpp(1049,80): warning C4267: 'argumento': conversión de 'size_t' a 'int'; posible pérdida de datos 1>C:\Users\mario\Desktop\rAthena \src\map\mob.cpp(2839,57): warning C4267: 'argumento': conversión de 'size_t' a 'int'; posible pérdida de datos 1>C:\Users\mario\Desktop\rAthena \src\map\mob.cpp(3009,58): warning C4267: 'argumento': conversión de 'size_t' a 'int'; posible pérdida de datos 1>C:\Users\mario\Desktop\rAthena \src\map\mob.cpp(6410,50): warning C4267: 'inicializando': conversión de 'size_t' a 'int'; posible pérdida de datos 1>C:\Users\mario\Desktop\rAthena \src\map\mob.cpp(6411,65): warning C4267: 'inicializando': conversión de 'size_t' a 'int'; posible pérdida de datos Can you guys lend me a hand?
  4. Solved! Fixed here: https://github.com/rathena/rathena/issues/7247
  5. Client and other players experience crashing everytime this script runs - Id: 18856 AegisName: W_King_Tiger_Doll_Hat Name: W King Tiger Doll Hat Type: Armor Buy: 10 Defense: 10 Locations: Head_Top: true ArmorLevel: 1 EquipLevelMin: 1 Refineable: true View: 973 Script: | bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_Player_Doram,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*max(1,getrefine()); }",3*.@r,3000,BF_NORMAL,"{ active_transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Traaaansformation-!! Eddga form!!\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*max(1,getrefine()); }",.@r,3000,BF_NORMAL,"{ active_transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Traaaansformation-!! Eddga form!!\"; }"; or - Id: 11592 AegisName: Trance_Candy_R Name: Trans Candy Red Type: Healing Buy: 20 Weight: 30 Script: | itemheal 45,0; transform 1507,600000,SC_MTF_MHP,20; specialeffect2 EF_CLOAKING; showscript "Trans-Form-!! Bloody Murderer Fo-rm!!"; There is no console error or .exe crash log to identify the source. any idea?
  6. Sorry for the necro posting! both skills hit twice, but not as I would like, showing the 2 hits with yellow numbers. I got this in scr/map/battle.c Line switch (skill_id) { case RK_WINDCUTTER: if (sd && sd->weapontype1 == W_2HSWORD) wd->div_ = 2; break; add: case RG_BACKSTAP: skill_lv = pc_checkskill(sd, TF_DOUBLE); if (skill_lv > 0) { if(rnd()%100 < (7 * skill_lv)) { wd->div_++; } } break; case RG_RAID: skill_lv = pc_checkskill(sd, TF_DOUBLE); if (skill_lv > 0) { if(rnd()%100 < (7 * skill_lv)) { wd->div_++; } } break; It work as I wish, both skills are taking tf_double chances to hit double, bad is that! It does it with any weapon or even barehanded.. I would like to make it work with daggerclass only!
  7. yes this is gold. I was wondering if this could come with a NPC to make the players know the actual bonus map.
  8. May I ask for this please? DOTD (Dungeon Of The Day): Every day there will be Dungeon maps with increased experience (+10%). Even those summoned by branches inside the map from a random list. PRE-RENEWAL
  9. atcommand "@useskill 151 1 self"
  10. Good day,please help me! Bindatcommands are not working in the item scripts. TXT Example: 40574,Moonlight Bell,Moonbell,11,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 549; soundeffectall "moonlight_move.wav",0; atcommand "@bonus"; },{},{} @bonus is a custom npc bind atcommand that I use to apply random options to the gear. Oncommand only works with typing or talking to the NPC, but I want activate the script by using the item above. What can I do?
  11. Is this possible via SCR? Without editing skilldb.yml Chances Need to work together with tf_double skill level.
  12. Good day, This is [Euphy] rathena custom npc default warper. Any way to reset last warp map and coordinates OnPCLogOutEvent if (lastwarp$ == "") message strcharinfo(0),"You haven't warped anywhere yet. Last warp resets with logout."; else warp lastwarp$,lastwarpx,lastwarpy; end; function Go { set lastwarp$, getarg(0); set lastwarpx, getarg(1,0); set lastwarpy, getarg(2,0); warp getarg(0),getarg(1,0),getarg(2,0); end; } Help please
  13. dear Slammer! Something went wrong, the item still restores sp without the gear equipped. 515,Carrot,Carrot,0,15,,20,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(18,20),0; if (getequipid(EQI_HEAD_LOW) == 18683) specialeffect2 332; if (getequipid(EQI_HEAD_LOW) == 18683) itemheal 0,rand(2,4); },{},{} But I solved it by individualizing the effects separatedly.
  14. Good morning dear community, for me it is a pleasure to return to rathena. This time I ask for help with the isequiped check, I am working in a low rate server without sp consumables, and I came up with the idea of creating an additional bonus for the lower item id: carrot in mout "https://ratemyserver.net/index.php?page=re_item_db&item_id=18683". I want this item, while being equipped on lower head, to cause carrots to restore sp when consumed. I made the function already: 515,Carrot,Carrot,0,15,,20,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(18,20),0; callfunc "zanabria"; },{},{} Now I need help in this part: function script zanabria { if (isequipped(18683)) specialeffect2 332; itemheal rand(0,0),rand(2,4); end; } This is the aditional sp restore effect while equiped, but I NEED help here for the else exception, because it sill restoring sp withput the equiped carrot in mouth.
  15. 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.
  16. For weapons, armor, garment, shields, footgear and accessories. with a bind atcommand like @bonus?
  17. tortoise.git forces to download certain exes that many new people could'nt understand. Even I experiencee cerntain complications using the .git.
  18. 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.
  19. 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?
  20. 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),
×
×
  • Create New...