Jump to content

Patotron

Members
  • Posts

    27
  • Joined

  • Last visited

Everything posted by Patotron

  1. Which version of rAthena are you using? In case it's the most current one, maybe you're using a database with no previous patch application that also allowed the migration to yaml.
  2. You are only checking the first element of the array. The correct script should be: { setarray .@mapname$[0], "prt_fild08", "06guild_01", "06guild_02", "06guild_03", "06guild_04", "06guild_05", "06guild_06", "06guild_07", "06guild_08"; set .@found,0; for(.@i = 0; .@i < getarraysize(.@mapname$); .@i++ ) { if(strcharinfo(3) == .@mapname$[.@i]) { set .@found,1; } } if (.@found == 1) { delitem 604,1; monster "this",-1,-1,"--ja--",-1,1,""; } else dispbottom "This item can't be used on your current map."; } (Not tested, but it should work)
  3. What do you mean by "writes the messages all one after the other although he should do it in different message boxes"? What I understand is that you want every "mes" to be a different window, but I don't think that's what it is.
  4. In src/char/char.cpp, function char_mmo_gender. int char_mmo_gender( const struct char_session_data *sd, const struct mmo_charstatus *p, char sex ){ switch( sex ){ #if PACKETVER >= 20141016 case 'M': return SEX_MALE; case 'F': return SEX_FEMALE; #else // No matter what the database says, always return the account gender // Per character gender is not supported before 2014-10-16 #endif default: // There are calls to this function that do not contain the session if( sd == nullptr ){ int i; // Find player session ARR_FIND( 0, fd_max, i, session[i] && ( sd = (struct char_session_data*)session[i]->session_data ) && sd->account_id == p->account_id ); if( i >= fd_max ){ ShowWarning( "Session was not found for character '%s' (CID: %d, AID: %d), defaulting gender to male...\n", p->name, p->char_id, p->account_id ); return SEX_MALE; } } ShowWarning( "Found unknown gender '%c' for character '%s' (CID: %d, AID: %d), returning account gender...\n", sex, p->name, p->char_id, p->account_id ); return sd->sex; } } As we can see here if PACKETVER is less than 20141016 always execute the default case. The message "Found unknown gender 'M' for character 'Joven15'" is the correct behaviour. In your use case is safe to just comment this line (886 in the in the mentioned file), since the only thing it's telling you is that since you use a lower version than the 20141016 it doesn't support sex by character. Just keep in mind is a warning, not an error. EDIT: However, this error will be corrected when the PR is accepted
  5. getmapusers("nombre del mapa") , te devuelve el número de personas dentro de un mapa, puedes utilizarlo para saber si hay alguien en el mapa al que quieres restringir la entrada. EDIT: Por cierto, creo que el post está fuera del subforo que toca. prontera,100,100,2 script Test 55,{ if(getmapusers("izlude") >= 1) { //Hay al menos una persona en el mapa } else { //No hay personas en el mapa } }
  6. This is not working. I tested with 2 different data.grf and nothing. I changed the directory too and the same. I did :/ It stills not working. Thanks you all .
  7. When you do that: $find / -name libpcre.so.3 What you get after? Can you give us a screen?
  8. Is a Linux VPS? If yes you can try that: sudo ldconfig
  9. When I'm trying to run Brow Edit, the black window stop like that: http://gyazo.com/3d9f4d884fb594807d8f552e07e5d09b . Here is the log_worldeditor: http://gyazo.com/d4b60c5d48e1c158450095285648ceae Brow Edit never starting . Any ideas?
  10. 0,5,10,0,0,0,0,0,0,0,0,0,0 //SM_BASH#Bash# The first number is Job ID. And maybe you need to add it on lua files too, lua files are required to see the skill in game.
  11. Patotron

    Land Protector

    Skill.c Find: case SC_FEINTBOMB: clif_skill_nodamage(src,src,skill_id,skill_lv,1); skill_unitsetting(src,skill_id,skill_lv,x,y,0); // Set bomb on current Position if( skill_blown(src,src,6,unit_getdir(src),0) ) skill_castend_nodamage_id(src,src,TF_HIDING,1,tick,0); break; Replace with: case SC_FEINTBOMB: if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) { clif_skill_fail(sd,skill_id,USESKILL_FAIL,0); return 0; } clif_skill_nodamage(src,src,skill_id,skill_lv,1); skill_unitsetting(src,skill_id,skill_lv,x,y,0); // Set bomb on current Position if( skill_blown(src,src,6,unit_getdir(src),0) ) skill_castend_nodamage_id(src,src,TF_HIDING,1,tick,0); break; Find: case WZ_FROSTNOVA: clif_skill_nodamage(src,bl,skill_id,skill_lv,1); skill_area_temp[1] = 0; map_foreachinrange(skill_attack_area, src, skill_get_splash(skill_id, skill_lv), splash_target(src), BF_MAGIC, src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); break; Replace with: case WZ_FROSTNOVA: if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) { clif_skill_fail(sd,skill_id,USESKILL_FAIL,0); return 0; } clif_skill_nodamage(src,bl,skill_id,skill_lv,1); skill_area_temp[1] = 0; map_foreachinrange(skill_attack_area, src, skill_get_splash(skill_id, skill_lv), splash_target(src), BF_MAGIC, src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); break; Didnt tested it. But u can try .
  12. getpartymember getcharid(1); set @partymembercount,$@partymembercount; copyarray @partymembername$[0],$@partymembername$[0],@partymembercount; set $@partymembercount,0; deletearray $@partymembername$[0],getarraysize($@partymembername$); if(@partymembercount == 4) { // Comprobaciones de si están ONLINE y lo que tu quieras. } else { mes "La party debe estar formada por 4 personas."; close; } Puedes probar con eso, es algo hecho de forma rápida y quizá se pueda optimizar, pero bueno, servirte te puede servir para utilizarlo u orientarte.
  13. If it dont work try this: Make sure you recompile after edit if (skill_id == AS_SONICBLOW) return damage * 75/100;
  14. Add under this: if (bl->type == BL_PC) { sd=(struct map_session_data *)bl; //Special no damage states if(flag&BF_WEAPON && sd->special_state.no_weapon_damage) DAMAGE_SUBRATE(sd->special_state.no_weapon_damage) if(flag&BF_MAGIC && sd->special_state.no_magic_damage) DAMAGE_SUBRATE(sd->special_state.no_magic_damage) if(flag&BF_MISC && sd->special_state.no_misc_damage) DAMAGE_SUBRATE(sd->special_state.no_misc_damage) if(!damage) return 0; } yep
  15. Search this in src/map/battle.c: if (bl->type == BL_PC) { sd=(struct map_session_data *)bl; //Special no damage states if(flag&BF_WEAPON && sd->special_state.no_weapon_damage) DAMAGE_SUBRATE(sd->special_state.no_weapon_damage) if(flag&BF_MAGIC && sd->special_state.no_magic_damage) DAMAGE_SUBRATE(sd->special_state.no_magic_damage) if(flag&BF_MISC && sd->special_state.no_misc_damage) DAMAGE_SUBRATE(sd->special_state.no_misc_damage) if(!damage) return 0; } Add below this: if (skill_id == AS_SONICBLOW) damage = damage * 75/100; I didnt tested it, but I think It will run
  16. ACMD_FUNC(refresh) { nullpo_retr(-1, sd); clif_refresh(sd); status_change_start(bl, SC_INVINCIBLE, 10000, 1, 0, 0, 0, u_, 2); status_change_start(bl, SC_BLADESTOP_WAIT, 10000, 1, 0, 0, 0, u_, 2); return 0; } Try it, dont know if it works, dont tested.
  17. Try replacing your @refresh command to this: ACMD_FUNC(refresh) { if (map[sd->bl.m].flag.pvp) { clif_displaymessage(sd->fd,"@refresh disabled on PvP maps."); return -1; } nullpo_retr(-1, sd); clif_refresh(sd); return 0; } With that, @refresh wont work on PvP maps. If you need this out of PvP maps we can modify it. I hope it help you
  18. Seach this: [in atcommand.c] clif_displaymessage(fd, msg_txt(1188)); // Autoloot is now off. return 0; } and put the code down of that. /*========================================== * Cydh [Edited by TxusToni to work on rAthena] * @afk2 * Turns on/off logout on player with aw message *------------------------------------------*/ ACMD_FUNC(afk2) { struct map_session_data* pl_sd; char temp_msg[CHAT_SIZE_MAX]; nullpo_retr(-1, sd); memset(temp_msg, '\0', sizeof(temp_msg)); if( map[sd->bl.m].flag.autotrade == battle_config.autotrade_mapflag ) { if (!message || !*message || sscanf(message, "%255[^\n]", temp_msg) < 1) { clif_displaymessage(sd->fd, "Please, enter at least an option (usage: @afk2 <away message>)."); return -1; } else { sd->state.away = 1; sd->state.monster_ignore = 1; sd->state.autotrade = 1; if( battle_config.at_timeout ) { int timeout = atoi(message); status_change_start(&sd->bl, SC_AUTOTRADE, 10000, 0, 0, 0, 0, ((timeout > 0) ? min(timeout,battle_config.at_timeout) : battle_config.at_timeout) * 60000, 0); } sscanf(message, "%255[^\n]", sd->state.away_msg); clif_authfail_fd(fd, 15); pc_setsit(sd); skill_sit(sd,1); clif_sitting(&sd->bl,1); clif_changelook(&sd->bl,LOOK_HEAD_TOP,471); } } else clif_displaymessage(fd, "AFK is not allowed on this map."); return 0; } Search this: ACMD_DEF(autoloot), and put the code down of that. ACMD_DEF(afk2), Search this: [in clif.c] clif_wis_end(fd, 2); // 2: ignored by target return; } And put the code down. // if player is @away. [Cydh] [Edited by TxusToni to work on rAthena] if( dstsd->state.away == 1 ) { char output_away[256]; clif_wis_end(fd, 0); // 0: success to send wisper sprintf(output_away, "(away) \"%s\"", dstsd->state.away_msg); clif_wis_message(fd, dstsd->status.name, output_away, strlen(output_away) + 1); // send @away message to sender clif_wis_message(dstsd->fd, sd->status.name, message, messagelen); // show meesage from sender return; } Search this: [in pc.h] unsigned int warping : 1; and put the code down. unsigned int away : 1; //@away auto message. [Cydh] [Edited by TxusToni to work on rAthena] unsigned char away_msg[CHAT_SIZE_MAX]; //@away auto message. [Cydh] [Edited by TxusToni to work on rAthena] As i said, dont know if it will work, try it.
  19. Try this (Dont tested, so i dont know if it works). atcommand.c [i hope you know where you need to place this ] /*========================================== * Cydh [Edited by TxusToni to work on rAthena] * @afk2 * Turns on/off logout on player with aw message *------------------------------------------*/ ACMD_FUNC(afk2) { struct map_session_data* pl_sd; char temp_msg[CHAT_SIZE_MAX]; nullpo_retr(-1, sd); memset(temp_msg, '\0', sizeof(temp_msg)); if( map[sd->bl.m].flag.autotrade == battle_config.autotrade_mapflag ) { if (!message || !*message || sscanf(message, "%255[^\n]", temp_msg) < 1) { clif_displaymessage(sd->fd, "Please, enter at least an option (usage: @afk2 <away message>)."); return -1; } else { sd->state.away = 1; sd->state.monster_ignore = 1; sd->state.autotrade = 1; if( battle_config.at_timeout ) { int timeout = atoi(message); status_change_start(&sd->bl, SC_AUTOTRADE, 10000, 0, 0, 0, 0, ((timeout > 0) ? min(timeout,battle_config.at_timeout) : battle_config.at_timeout) * 60000, 0); } sscanf(message, "%255[^\n]", sd->state.away_msg); clif_authfail_fd(fd, 15); pc_setsit(sd); skill_sit(sd,1); clif_sitting(&sd->bl,1); clif_changelook(&sd->bl,LOOK_HEAD_TOP,471); } } else clif_displaymessage(fd, "AFK is not allowed on this map."); return 0; } ACMD_DEF(afk2), clif.c [ Search this - clif_wis_end(fd, 2); // 2: ignored by target and put, down: // if player is @away. [Cydh] [Edited by TxusToni to work on rAthena] if( dstsd->state.away == 1 ) { char output_away[256]; clif_wis_end(fd, 0); // 0: success to send wisper sprintf(output_away, "(away) \"%s\"", dstsd->state.away_msg); clif_wis_message(fd, dstsd->status.name, output_away, strlen(output_away) + 1); // send @away message to sender clif_wis_message(dstsd->fd, sd->status.name, message, messagelen); // show meesage from sender return; } pc.h [ Search this : unsigned int warping : 1; and put down: ] unsigned int away : 1; //@away auto message. [Cydh] [Edited by TxusToni to work on rAthena] unsigned char away_msg[CHAT_SIZE_MAX]; //@away auto message. [Cydh] [Edited by TxusToni to work on rAthena] As i said, dont know if it will work, try it.
  20. Noone knows how to do that?
  21. I want to have a mob that speaks when someone hits him or something like this, to have more usefull mobs, if you can tell me how to do a mob talk every 10secs (is an example) or something like this, and how to do a mob speak when someone hits him, thank all
  22. [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! [Error]: skill_unit_move_sub: Reached limit of unit objects per cell! Can someone help me with this error? I used the critical magic source edit of goddameit, but when i kill some player, this error appears some times, if someone can help me, it will be good. Thank
  23. The error is at the top of the file. login#PickLog types (M)onsters Drop, (P)layers Drop/Take, Mobs Drop (L)oot Drop/Take, Login#text , login is uncomented, try to edit the first line like this #login PickLog types (M)onsters Drop, (P)layers Drop/Take, Mobs Drop (L)oot Drop/Take, Or only delete he first word "login". I think thats the error. Sorry for bad english
  24. At the end of the code I think you need to put ; like this ) ENGINE=MyISAM AUTO_INCREMENT=1 ; Maybe is this, or maybe error ignore this, but try to put the ; at the end. PD: I think this post is on wrong site.
×
×
  • Create New...