Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Waken last won the day on May 5 2022

Waken had the most liked content!


About Waken

  • Rank
    Advanced Member
  • Birthday 12/22/1995

Contact Methods

  • Discord

Profile Information

  • Gender
  • Location:
  • Interests
  • Github
  • Emulator
  • Client Version

Recent Profile Visitors

3919 profile views
  1. // Set each element of the array individually for (.@i = 0; .@i < getarraysize(.@keys); .@i++) { setd("$global_storage_keys" + ":" + .@guild_id + "[" + .@i + "]", .@keys[.@i]); } Sadly seems that the script engine is clunky when you need to work with setd and arrays, this should be done by the engine itself, but since seems like setd isn't doing the job behind the scene, maybe you could try my code.
  2. I guess you have been passing the wrong struct to ShowScript function, use this instead : (as you can see here) clif->ShowScript(&(*sd)->bl, "your message", AREA); About deleting that conditional... You shouldn't do it if the original function is not gonna be executed ever, not sure about this specific case, and keep in note that when using preHook your function is gonna be executed first.
  3. Hello there, i'm not an expert but i'm gonna try to help. 1. About your warning, i got zero errors compiling your plugin in linux so i have no idea why it gives you the warning. 2. Since now you are using a preHook, you don't need to use **retVal**. This is only used when it's a postHook, because sometimes you want to know the returned value from the original execution (for example... stop your hook if you need it when returning an error). Is it your "little version" related to the warning, or there's more code somewhere?
  4. Hey, quizás llego tarde... aún así ten lo dejo por aquí. Todos los clientes: http://nemo.herc.ws/clients/ Data Actualizada tanto para Pre como Renewal: https://github.com/llchrisll/ROenglishRE
  5. Did you tried? achievement_iscompleted(<ach_id>{, <account_id>}) And if the "bonus syntax" doesn't work you could try to create your own status and assign them to the players when they login.
  6. conf/map/battle/skill.conf // Allows players to skip menu when casting Teleport level 1 // Menu contains two options. "Random" and "Cancel" skip_teleport_lv1_menu: false It's not lua, it's a custom one called "scripting" and you can read about how it works inside doc/script_commands.txt This for example can be found inside the script_commands.txt : ** Define a shop/cashshop NPC. -%TAB%shop%TAB%<NPC Name>%TAB%<sprite>,<itemid>:<price>{,<itemid>:<price>...} <map name>,<x>,<y>,<facing>%TAB%shop%TAB%<NPC Name>%TAB%<sprite>,<itemid>:<price>{,<itemid>:<price>...} Inside conf/common/inter-server.conf inter_configuration: { // Level range for sharing within a party party_share_level: 15 No idea. conf/map/battle/exp.conf // Rate at which exp. is given. (Note 2) base_exp_rate: 100 // Rate at which job exp. is given. (Note 2) job_exp_rate: 100 That is related to client resources, you need to change client files inside data/luafiles514/lua files/navigation/ This repo could be useful https://github.com/zackdreaver/ROenglishRE/ If you are using the guide that you posted, all databases are in OpenServer. I don't know, but you can start with msgstringtable.txt, it's inside your data folder. And please, consider these things : - Create topics and don't use the introduction to make your questions. - Use the wiki (https://github.com/HerculesWS/Hercules/wiki) and the search before ask - Si necesitas soporte en Español, tienes una sección para ello
  7. To know what is exactly the problem as Dastgir told you it's needed a crashdump. https://github.com/HerculesWS/Hercules/wiki/GDB (For linux) https://github.com/HerculesWS/Hercules/wiki/MSVC-Crash-Debugging (Windows Visual Studio instead)
  8. That's not possible without modifying the client. @Functor have a service for this, try to ask him.
  9. They are not sprites but palettes, so in your data/grf you need to have palettes for both (brown and white), you can manage it by ranges. (1-100 white 100-200 brown). And then modify your stylist npc to let the players choose if they want the brown skin or the white. Sadly the cloth colors and the skin are not separated because they are an unique palette (as you see in the image below) and this is hardcoded in client. (old image from the hercules wiki)
  10. As i told you at the Discord Channel, you need to declare it first, the compiler is saying there that "tstatus is unknown for him" that's probably because the before declaration of status are out of the scope (because they are inside conditionals) I didn't tested it but try to declare it like this before your conditional : struct status_data *tstatus = status->get_status_data(bl);
  11. case CR_ACIDDEMONSTRATION: #ifdef RENEWAL {// [malufett] int64 matk=0, atk; short tdef = status->get_total_def(target); short tmdef = status->get_total_mdef(target); int targetVit = min(120, status_get_vit(target)); short totaldef = (tmdef + tdef - ((uint64)(tmdef + tdef) >> 32)) >> 1; // FIXME: What's the >> 32 supposed to do here? tmdef and tdef are both 16-bit... matk = battle->calc_magic_attack(src, target, skill_id, skill_lv, mflag).damage; atk = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, false, s_ele, ELE_NEUTRAL, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|(sc && sc->data[SC_WEAPONPERFECT]?8:0), md.flag); md.damage = matk + atk; if( src->type == BL_MOB ){ totaldef = (tdef + tmdef) >> 1; md.damage = 7 * targetVit * skill_lv * (atk + matk) / 100; /* // Pending [malufett] if( unknown condition ){ md.damage = 7 * md.damage % 20; md.damage = 7 * md.damage / 20; }*/ }else{ float vitfactor = 0.0f, ftemp; if( (vitfactor=(status_get_vit(target)-120.0f)) > 0) vitfactor = (vitfactor * (matk + atk) / 10) / status_get_vit(target); ftemp = max(0, vitfactor) + (targetVit * (matk + atk)) / 10; md.damage = (int64)(ftemp * 70 * skill_lv / 100); if (target->type == BL_PC) md.damage >>= 1; } md.damage -= totaldef; if( tsc && tsc->data[SC_LEXAETERNA] ) { md.damage <<= 1; status_change_end(target, SC_LEXAETERNA, INVALID_TIMER); } } #else // updated the formula based on a Japanese formula found to be exact [Reddozen] if(tstatus->vit+sstatus->int_) //crash fix md.damage = (int)(7*tstatus->vit*sstatus->int_*sstatus->int_ / (10*(tstatus->vit+sstatus->int_))); else md.damage = 0; if (tsd) md.damage>>=1; #endif // Some monsters have totaldef higher than md.damage in some cases, leading to md.damage < 0 if( md.damage < 0 ) md.damage = 0; if( md.damage > INT_MAX>>1 ) //Overflow prevention, will anyone whine if I cap it to a few billion? //Not capped to INT_MAX to give some room for further damage increase. md.damage = INT_MAX>>1; break; In battle_calc_misc_attack (battle.c)
  12. Puedes hacer multitud de cosas ... - Quest de historia : Hablar con múltiples npcs eligiendo tal vez las opciones correctas hasta llegar a resolver la trama. - Quest de busqueda : Encontrar a alguien escondido o localizaciones. No estoy muy inspirado ahora mismo, pero tienes multitud de comandos, te recomiendo que te fijes en los comandos en script_commands seguramente se te ocurran quest e ideas cuando veas las posibilidades que tienes.
  13. Nice work, i'm following this topic It's hard to do animations for gr2 format, in 3dmax looks cool... and slower, but in gr2 viewer looks really fast and bad... Try to put the animation in the folder "3dmob_bone" like this ... "5_stand.gr2" with the number of the model. Maybe will work, dunno ! At least my stand animation is working on my models doing this. But, you are right, if they disabled the client animation on the flag.... owww the pain.
  14. Better at optimization, but uncompleted. (unfortunately...) Here do you have the github of the project : https://github.com/Borf/browedit
  • Create New...

Important Information

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