This file is missing afxres.h, @louis help please please
(https://files.fm/f/hdzgsduy5)
https://files.fm/f/hdzgsduy5
This file is missing afxres.h, @louis help please please
(https://files.fm/f/hdzgsduy5)
https://files.fm/f/hdzgsduy5
https://community.developers.refinitiv.com/questions/8225/fatal-error-rc1015-cannot-open-include-file-afxres.html
This file is missing afxres.h, @louis help please please
(https://files.fm/f/hdzgsduy5)
https://files.fm/f/hdzgsduy5
https://community.developers.refinitiv.com/questions/8225/fatal-error-rc1015-cannot-open-include-file-afxres.html
This file is missing afxres.h, @louis help please please
(https://files.fm/f/hdzgsduy5)
https://files.fm/f/hdzgsduy5
https://community.developers.refinitiv.com/questions/8225/fatal-error-rc1015-cannot-open-include-file-afxres.html
share client test ! please please please
alfin algo bueno nada de esas cosas que dejan por la mitadNi como esa porqueria del Tuki.
Muy buen aporte louis ! Yo hice exactamente lo mismo pero lo mantuve en VS2010 en lugar de upgradearlo a vs2019.
Esperemos que alguien haga algo interesante con esto porque con la base liberada aún no hicieron nada interesante así que espero que el trabajo no sea en vano.
Muy buen aporte louis ! Yo hice exactamente lo mismo pero lo mantuve en VS2010 en lugar de upgradearlo a vs2019.
Esperemos que alguien haga algo interesante con esto porque con la base liberada aún no hicieron nada interesante así que espero que el trabajo no sea en vano.
gracias, 2010 también funciona bien, hice más para aprender
y 2019 funciona mejor con github
Muy buen aporte louis ! Yo hice exactamente lo mismo pero lo mantuve en VS2010 en lugar de upgradearlo a vs2019.
Esperemos que alguien haga algo interesante con esto porque con la base liberada aún no hicieron nada interesante así que espero que el trabajo no sea en vano.
gracias, 2010 también funciona bien, hice más para aprender
y 2019 funciona mejor con github
Puedes abrir proyecto de VS2010 usando VS2019 pero sin modificar el target version del proyecto, incluso puedes compilarlo de esa manera. Esto te da los beneficios de usar el VS2019 pero compilando en 2010 (yo uso así sólo por el Dark Theme xD)
(https://i.imgur.com/UrW55rS.png)
En fin, buen trabajo. Sólo faltaría agregar Rage Fighter y Mu Helper y ya tendríamos una buena base de S6 para manejar :D
estamos igual pase todo a vs2019 es mas comodo si abres proyecto en otro lado te lo deja con las ventanas igual abiertas como las dejaste xdMuy buen aporte louis ! Yo hice exactamente lo mismo pero lo mantuve en VS2010 en lugar de upgradearlo a vs2019.
Esperemos que alguien haga algo interesante con esto porque con la base liberada aún no hicieron nada interesante así que espero que el trabajo no sea en vano.
gracias, 2010 también funciona bien, hice más para aprender
y 2019 funciona mejor con github
Puedes abrir proyecto de VS2010 usando VS2019 pero sin modificar el target version del proyecto, incluso puedes compilarlo de esa manera. Esto te da los beneficios de usar el VS2019 pero compilando en 2010 (yo uso así sólo por el Dark Theme xD)
(https://i.imgur.com/UrW55rS.png)
En fin, buen trabajo. Sólo faltaría agregar Rage Fighter y Mu Helper y ya tendríamos una buena base de S6 para manejar :D
Voce e o cara Louis, uma duvida voce tem como colocar o muhelper ou ñao tem como ? Obg
Voce e o cara Louis, uma duvida voce tem como colocar o muhelper ou ñao tem como ? Obg
A source ta ai, você mesmo pode colocar haha
//windows
#include <WinSock2.h>
#include <mmsystem.h>
#include <shellapi.h>
//c runtime
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <assert.h>
#include <mbstring.h>
#include <time.h>
#include <math.h>
#include <stdarg.h>
#include <conio.h>
Voce e o cara Louis, uma duvida voce tem como colocar o muhelper ou ñao tem como ? Obg
A source ta ai, você mesmo pode colocar hahaCode: [Select]//windows
#include <WinSock2.h>
#include <mmsystem.h>
#include <shellapi.h>
//c runtime
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <assert.h>
#include <mbstring.h>
#include <time.h>
#include <math.h>
#include <stdarg.h>
#include <conio.h>
estas librerias donde las consigos por que tengo el vs2019 full instalado
wndClass.hIcon = LoadIcon(hCurrentInst, (LPCTSTR)IDI_ICON1);
Voce e o cara Louis, uma duvida voce tem como colocar o muhelper ou ñao tem como ? Obg
A source ta ai, você mesmo pode colocar hahaCode: [Select]//windows
#include <WinSock2.h>
#include <mmsystem.h>
#include <shellapi.h>
//c runtime
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <assert.h>
#include <mbstring.h>
#include <time.h>
#include <math.h>
#include <stdarg.h>
#include <conio.h>
estas librerias donde las consigos por que tengo el vs2019 full instalado
Esas son librerías default de windows xD fijate si tenés bien instalado el VS2019.
Pd: Fix del icono en la ventana
En la función: HWND StartWindow(HINSTANCE hCurrentInst, int nCmdShow)Code: [Select]wndClass.hIcon = LoadIcon(hCurrentInst, (LPCTSTR)IDI_ICON1);
open game it shows Skill_Eng.bmd message while client it is already available.
@kayito pronto voy agregar tus sugerenciasaplausos Obrigado magia2
@louis
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
new update
Añadidas sugerencias de @kayito
y solucionó el problema al enviar el artículo al cofre.
@louis
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
en todas las pruebas que hice, nunca surgió, no sé qué es.
@louis
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
en todas las pruebas que hice, nunca surgió, no sé qué es.
no se que estoy haciendo mal solo cambie ip tanto del main como del MuServer pero me parece algo raro. incluso lo monte un vps por si acaso es que no aceptaba conexiones locales. tampoco se que es ya sera cuando le dedique xd salu2
@louis
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
en todas las pruebas que hice, nunca surgió, no sé qué es.
no se que estoy haciendo mal solo cambie ip tanto del main como del MuServer pero me parece algo raro. incluso lo monte un vps por si acaso es que no aceptaba conexiones locales. tampoco se que es ya sera cuando le dedique xd salu2
@louis
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
en todas las pruebas que hice, nunca surgió, no sé qué es.
no se que estoy haciendo mal solo cambie ip tanto del main como del MuServer pero me parece algo raro. incluso lo monte un vps por si acaso es que no aceptaba conexiones locales. tampoco se que es ya sera cuando le dedique xd salu2
en lo main desativa el #define NEW_PROTOCOL_SYSTEM
e coloca en lo gs #define NEW_PROTOCOL_SYSTEM 0
para probar
@louis
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
en todas las pruebas que hice, nunca surgió, no sé qué es.
no se que estoy haciendo mal solo cambie ip tanto del main como del MuServer pero me parece algo raro. incluso lo monte un vps por si acaso es que no aceptaba conexiones locales. tampoco se que es ya sera cuando le dedique xd salu2
a estas alturas ni levantar un muserver F
me costo pero lo pude compilar :D. creo que va un poco rápido todo dentro del juego
gracias a todos lo que comparten su trabajo.
@RinOv microsoft siempre acusa virus, incluso dll limpia jaja
@louis
revisen que esta source es tomada por virus por Microsoft: https://www.virustotal.com/gui/file/32f0bdc7a0c78ff211ad929d6a0825dc026d59c75d60bc9ab47890ee19a9ddf5?nocache=1
en cambio la original no:
https://www.virustotal.com/gui/file/2fd27f3810da40e6dfed58266ffb8786a515fd53e5fc99338636c678b01c7b1b?nocache=1
si usas windows 7 o el antivirus "microsoft security essentials" te lo borra directamente, al contrario la source original sin problemas. OJO con eso
(https://i.ibb.co/rGTYVzL/Sin-t-tulo.png)
@louis
revisen que esta source es tomada por virus por Microsoft: https://www.virustotal.com/gui/file/32f0bdc7a0c78ff211ad929d6a0825dc026d59c75d60bc9ab47890ee19a9ddf5?nocache=1
en cambio la original no:
https://www.virustotal.com/gui/file/2fd27f3810da40e6dfed58266ffb8786a515fd53e5fc99338636c678b01c7b1b?nocache=1
si usas windows 7 o el antivirus "microsoft security essentials" te lo borra directamente, al contrario la source original sin problemas. OJO con eso
(https://i.ibb.co/rGTYVzL/Sin-t-tulo.png)
Yeah it looks very organised and clean.
Client is in \Source Main 5.2\bin folder
Main will be in \Source Main 5.2\Global Release folder (after building)
EncTerrain74.obj is the only thing not letting the client to start properly. You can get it from here: https://mega.nz/file/IIhTxYLT#uxbQ_VOmE1lmJIBRz--UXde_qnuBrCJp2SrUjVN5nYI (https://mega.nz/file/IIhTxYLT#uxbQ_VOmE1lmJIBRz--UXde_qnuBrCJp2SrUjVN5nYI)
Looks like there is something wrong with select server/login scene. Even if you don't launch the server, you open main.exe, and after you get disconnected - Login Box pops up. it wasn't like this with original source.
https://streamable.com/p14a0m (https://streamable.com/p14a0m)
What does this NEW_PROTOCOL_SYSTEM exactly do?
https://prnt.sc/23p1uw5 (https://prnt.sc/23p1uw5)
https://prnt.sc/23p1xlp (https://prnt.sc/23p1xlp)
What does this NEW_PROTOCOL_SYSTEM exactly do?
https://prnt.sc/23p1uw5 (https://prnt.sc/23p1uw5)
https://prnt.sc/23p1xlp (https://prnt.sc/23p1xlp)
Trata de escalar privilegios con una rutina q secuestra el instalador de Windows.
Trata de escalar privilegios con una rutina q secuestra el instalador de Windows.
???
Trata de escalar privilegios con una rutina q secuestra el instalador de Windows.
???
Check your working environment. You may be the one infected
Visual Studio 2022
Fixes:
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
Visual Studio 2022Hello, can I use Visual Studio 2010 to compile
Fixes:
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
Visual Studio 2022Hello, can I use Visual Studio 2010 to compile
Fixes:[/list]
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
Visual Studio 2022
Fixes:
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
changelog bug fix.
::PostMessage(g_hWnd, WM_CLOSE, 0, 0);
break;
Para resolver el problema de el login cuando se desconecta, agreagar a MsgWin.cpp
en la funcion CMsgWin::ManageOKClick()
Luego de case RECEIVE_LOG_IN_FAIL_VERSION:
Lo siguiente:Code: [Select]::PostMessage(g_hWnd, WM_CLOSE, 0, 0);
break;
::PostMessage(g_hWnd, WM_DESTROY, 0, 0);
Para resolver el problema de el login cuando se desconecta, agreagar a MsgWin.cpp
en la funcion CMsgWin::ManageOKClick()
Luego de case RECEIVE_LOG_IN_FAIL_VERSION:
Lo siguiente:Code: [Select]::PostMessage(g_hWnd, WM_CLOSE, 0, 0);
break;
Visual Studio 2022
Fixes:
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
Para resolver el problema de el login cuando se desconecta, agreagar a MsgWin.cpp
en la funcion CMsgWin::ManageOKClick()
Luego de case RECEIVE_LOG_IN_FAIL_VERSION:
Lo siguiente:Code: [Select]::PostMessage(g_hWnd, WM_CLOSE, 0, 0);
break;
I added your fix
switch (m_nMsgCode)
{
case MESSAGE_SERVER_LOST:
case MESSAGE_VERSION:
case RECEIVE_LOG_IN_FAIL_ERROR:
case RECEIVE_LOG_IN_FAIL_VERSION:
::PostMessage(g_hWnd, WM_CLOSE, 0, 0);
break;
enum
{
PLAYER_SET,
PLAYER_STOP_MALE,
PLAYER_STOP_FEMALE,
PLAYER_STOP_SUMMONER, // Summoner's Place
PLAYER_STOP_SWORD,
PLAYER_STOP_TWO_HAND_SWORD,
PLAYER_STOP_SPEAR,
PLAYER_STOP_SCYTHE,
PLAYER_STOP_BOW,
PLAYER_STOP_CROSSBOW,
PLAYER_STOP_WAND, // Holding wand in place
PLAYER_STOP_FLY,
PLAYER_STOP_FLY_CROSSBOW,
PLAYER_STOP_RIDE,
PLAYER_STOP_RIDE_WEAPON,
PLAYER_WALK_MALE,
PLAYER_WALK_FEMALE,
PLAYER_WALK_SWORD,
PLAYER_WALK_TWO_HAND_SWORD,
PLAYER_WALK_SPEAR,
PLAYER_WALK_SCYTHE,
PLAYER_WALK_BOW,
PLAYER_WALK_CROSSBOW,
PLAYER_WALK_WAND, // Walking with wand
PLAYER_WALK_SWIM,
PLAYER_RUN,
PLAYER_RUN_SWORD,
PLAYER_RUN_TWO_SWORD,
PLAYER_RUN_TWO_HAND_SWORD,
PLAYER_RUN_SPEAR,
PLAYER_RUN_BOW,
PLAYER_RUN_CROSSBOW,
PLAYER_RUN_WAND, // Wand running
PLAYER_RUN_SWIM,
PLAYER_FLY,
PLAYER_FLY_CROSSBOW,
PLAYER_RUN_RIDE,
PLAYER_RUN_RIDE_WEAPON,
PLAYER_ATTACK_FIST, // Fist animation
PLAYER_ATTACK_SWORD_RIGHT1,
PLAYER_ATTACK_SWORD_RIGHT2,
PLAYER_ATTACK_SWORD_LEFT1,
PLAYER_ATTACK_SWORD_LEFT2,
PLAYER_ATTACK_TWO_HAND_SWORD1,
PLAYER_ATTACK_TWO_HAND_SWORD2,
PLAYER_ATTACK_TWO_HAND_SWORD3,
PLAYER_ATTACK_SPEAR1,
PLAYER_ATTACK_SCYTHE1,
PLAYER_ATTACK_SCYTHE2,
PLAYER_ATTACK_SCYTHE3,
PLAYER_ATTACK_BOW,
PLAYER_ATTACK_CROSSBOW,
PLAYER_ATTACK_FLY_BOW,
PLAYER_ATTACK_FLY_CROSSBOW,
PLAYER_ATTACK_RIDE_SWORD,
PLAYER_ATTACK_RIDE_TWO_HAND_SWORD,
PLAYER_ATTACK_RIDE_SPEAR,
PLAYER_ATTACK_RIDE_SCYTHE,
PLAYER_ATTACK_RIDE_BOW,
PLAYER_ATTACK_RIDE_CROSSBOW,
PLAYER_ATTACK_SKILL_SWORD1,
PLAYER_ATTACK_SKILL_SWORD2,
PLAYER_ATTACK_SKILL_SWORD3,
PLAYER_ATTACK_SKILL_SWORD4,
PLAYER_ATTACK_SKILL_SWORD5,
PLAYER_ATTACK_SKILL_WHEEL,
PLAYER_ATTACK_SKILL_FURY_STRIKE,
PLAYER_SKILL_VITALITY,
PLAYER_SKILL_RIDER,
PLAYER_SKILL_RIDER_FLY,
PLAYER_ATTACK_SKILL_SPEAR,
PLAYER_ATTACK_ONETOONE,
PLAYER_SKILL_HELL_BEGIN,
PLAYER_SKILL_HELL_START,
PLAYER_ATTACK_END,
PLAYER_FLY_RIDE = PLAYER_ATTACK_END,
PLAYER_FLY_RIDE_WEAPON,
PLAYER_DARKLORD_STAND, // Dark Lord Stand with Dark Spirits.
PLAYER_DARKLORD_WALK, // Dark Lord Walking with Dark Spirits.
PLAYER_STOP_RIDE_HORSE, // Dark Lord attack ( sting ). (●)
PLAYER_RUN_RIDE_HORSE, // Dark Lord Party Summon. (●)
PLAYER_ATTACK_STRIKE, // Stop riding the Dark Horse. (●)
PLAYER_ATTACK_TELEPORT, // Dark Horse Run.
PLAYER_ATTACK_RIDE_STRIKE, // Attack (stabbing) riding a dark horse.
PLAYER_ATTACK_RIDE_TELEPORT, // Summon a party by riding the Dark Horse.
PLAYER_ATTACK_RIDE_HORSE_SWORD, // One-handed attack while riding a Dark Horse.
PLAYER_ATTACK_RIDE_ATTACK_FLASH, // Thunderstrike on Dark Horse.
PLAYER_ATTACK_RIDE_ATTACK_MAGIC, // Magic attack on the Dark Horse.
PLAYER_ATTACK_DARKHORSE, // Dark Horse skill.
PLAYER_IDLE1_DARKHORSE, // (For login scene) Ride the Dark Horse and wield the Scepter
PLAYER_IDLE2_DARKHORSE, // (For login scene) Raise your legs over the Dark Horse
PLAYER_FENRIR_ATTACK, // Normal attack - with nothing
PLAYER_FENRIR_ATTACK_DARKLORD_AQUA, // Normal Attack - Disabled
PLAYER_FENRIR_ATTACK_DARKLORD_STRIKE, // Normal Attack - Dark Rod Stab
PLAYER_FENRIR_ATTACK_DARKLORD_SWORD, // Normal Attack - Dark Lord Strike (one-handed attack)
PLAYER_FENRIR_ATTACK_DARKLORD_TELEPORT, // Normal Attack - Summon Dark Lord Party
PLAYER_FENRIR_ATTACK_DARKLORD_FLASH, // Normal Attack - Dark Lord Aqua Flash
PLAYER_FENRIR_ATTACK_TWO_SWORD, // Normal Attack - Two-handed sword attack (Knight)
PLAYER_FENRIR_ATTACK_MAGIC, // Normal Attack - Magic Attack (Mage)
PLAYER_FENRIR_ATTACK_CROSSBOW, // Normal Attack - Crossbow Attack (Fairy)
PLAYER_FENRIR_ATTACK_SPEAR, // Normal Attack - Spear Attack (Knight)
PLAYER_FENRIR_ATTACK_ONE_SWORD, // Normal Attack - One-handed sword attack (Knight)
PLAYER_FENRIR_ATTACK_BOW, // Normal Attack - Bow Attack (Fairy)
PLAYER_FENRIR_SKILL, // Skill Attack - Bare Hand
PLAYER_FENRIR_SKILL_TWO_SWORD, // Skill Attack - Two-Handed Knife
PLAYER_FENRIR_SKILL_ONE_RIGHT, // Skill Attack - One Hand Right (100)
PLAYER_FENRIR_SKILL_ONE_LEFT, // Skill Attack - One Hand Left
PLAYER_FENRIR_DAMAGE, // damage - bare hands
PLAYER_FENRIR_DAMAGE_TWO_SWORD, // Damage - Two-Handed Knife
PLAYER_FENRIR_DAMAGE_ONE_RIGHT, // Damage - One Hand Right
PLAYER_FENRIR_DAMAGE_ONE_LEFT, // Damage - one hand left
PLAYER_FENRIR_RUN, // Running - Bare Hands (110)
PLAYER_FENRIR_RUN_TWO_SWORD, // Running - two-handed sword
PLAYER_FENRIR_RUN_ONE_RIGHT, // Running - One Hand Right
PLAYER_FENRIR_RUN_ONE_LEFT, // Running - One Hand Left
PLAYER_FENRIR_RUN_MAGOM, // Running - Bare Hand_Magic Sword(114)
PLAYER_FENRIR_RUN_TWO_SWORD_MAGOM, // Running - Two-Handed_Magic Sword
PLAYER_FENRIR_RUN_ONE_RIGHT_MAGOM, // Running - Right Hand_Magic Sword
PLAYER_FENRIR_RUN_ONE_LEFT_MAGOM, // Running - Left Hand_Magic Sword
PLAYER_FENRIR_RUN_ELF, // Running - bare hands_elf
PLAYER_FENRIR_RUN_TWO_SWORD_ELF, // Running - Two Hands_Elf
PLAYER_FENRIR_RUN_ONE_RIGHT_ELF, // Running - right hand_elf
PLAYER_FENRIR_RUN_ONE_LEFT_ELF, // Running - left hand_elf
PLAYER_FENRIR_STAND, // stop - bare hands
PLAYER_FENRIR_STAND_TWO_SWORD, // stop - two-handed sword
PLAYER_FENRIR_STAND_ONE_RIGHT, // stop - one hand right
PLAYER_FENRIR_STAND_ONE_LEFT, // stop - one hand left
PLAYER_FENRIR_WALK, // walking - bare hands
PLAYER_FENRIR_WALK_TWO_SWORD, // walking - two-handed sword
PLAYER_FENRIR_WALK_ONE_RIGHT, // walking - one hand right
PLAYER_FENRIR_WALK_ONE_LEFT, // Walking - One Hand Left (129)
PLAYER_ATTACK_BOW_UP, // Attack towards the sky with a bow
PLAYER_ATTACK_CROSSBOW_UP, // Attack towards the sky with a crossbow
PLAYER_ATTACK_FLY_BOW_UP, // Attack the sky with wings and bow
PLAYER_ATTACK_FLY_CROSSBOW_UP, // Attack the sky with wings and crossbow
PLAYER_ATTACK_RIDE_BOW_UP, // Riding a horse and aiming at the sky with a bow
PLAYER_ATTACK_RIDE_CROSSBOW_UP, // Attack the sky with a crossbow on horseback
PLAYER_ATTACK_ONE_FLASH, // A one-shot attack with a mounted sword.
PLAYER_ATTACK_RUSH, // Knight charge attack.
PLAYER_ATTACK_DEATH_CANNON, // Magic Sword Magic Flash.
PLAYER_ATTACK_REMOVAL, // Master skill removal magic.
PLAYER_ATTACK_STUN, // Sten off
PLAYER_HIGH_SHOCK, // Severe Shock Effect. (142)
// Added two-handed weapon animation.
PLAYER_STOP_TWO_HAND_SWORD_TWO,
PLAYER_WALK_TWO_HAND_SWORD_TWO,
PLAYER_RUN_TWO_HAND_SWORD_TWO,
PLAYER_ATTACK_TWO_HAND_SWORD_TWO,
PLAYER_SKILL_HAND1,
PLAYER_SKILL_HAND2,
PLAYER_SKILL_WEAPON1,
PLAYER_SKILL_WEAPON2, //(150)
PLAYER_SKILL_ELF1, // Elf: Attack Up/Defense Up/Healing
PLAYER_SKILL_TELEPORT,
PLAYER_SKILL_FLASH,
PLAYER_SKILL_INFERNO,
PLAYER_SKILL_HELL,
PLAYER_RIDE_SKILL,
// Summoner's exclusive skill.
PLAYER_SKILL_SLEEP,
PLAYER_SKILL_SLEEP_UNI,
PLAYER_SKILL_SLEEP_DINO,
PLAYER_SKILL_SLEEP_FENRIR,
PLAYER_SKILL_CHAIN_LIGHTNING,
PLAYER_SKILL_CHAIN_LIGHTNING_UNI,
PLAYER_SKILL_CHAIN_LIGHTNING_DINO,
PLAYER_SKILL_CHAIN_LIGHTNING_FENRIR,
PLAYER_SKILL_LIGHTNING_ORB,
PLAYER_SKILL_LIGHTNING_ORB_UNI,
PLAYER_SKILL_LIGHTNING_ORB_DINO,
PLAYER_SKILL_LIGHTNING_ORB_FENRIR,
PLAYER_SKILL_DRAIN_LIFE, // Summoner: Drain Life
PLAYER_SKILL_DRAIN_LIFE_UNI,
PLAYER_SKILL_DRAIN_LIFE_DINO,
PLAYER_SKILL_DRAIN_LIFE_FENRIR,
// Summoner summoning action.
PLAYER_SKILL_SUMMON,
PLAYER_SKILL_SUMMON_UNI,
PLAYER_SKILL_SUMMON_DINO,
PLAYER_SKILL_SUMMON_FENRIR,
PLAYER_SKILL_BLOW_OF_DESTRUCTION, // Strike of Destruction
PLAYER_SKILL_SWELL_OF_MP, // horsepower increase
PLAYER_SKILL_MULTISHOT_BOW_STAND, // multi shot
PLAYER_SKILL_MULTISHOT_BOW_FLYING,
PLAYER_SKILL_MULTISHOT_CROSSBOW_STAND,
PLAYER_SKILL_MULTISHOT_CROSSBOW_FLYING,
PLAYER_SKILL_RECOVERY, // Increase shield recovery
PLAYER_SKILL_GIGANTICSTORM, // Gigantic Storm
PLAYER_SKILL_FLAMESTRIKE, // flame strike
PLAYER_SKILL_LIGHTNING_SHOCK, // lightning shock
#ifdef YDG_ADD_SKILL_RIDING_ANIMATIONS
PLAYER_SKILL_GIGANTICSTORM_UNI, // Added Gigantic Storm boarding
PLAYER_SKILL_GIGANTICSTORM_DINO,
PLAYER_SKILL_GIGANTICSTORM_FENRIR,
PLAYER_ATTACK_SKILL_WHEEL_UNI, // Addition of tornado blood attack boarding
PLAYER_ATTACK_SKILL_WHEEL_DINO,
PLAYER_ATTACK_SKILL_WHEEL_FENRIR,
#endif // YDG_ADD_SKILL_RIDING_ANIMATIONS
PLAYER_DEFENSE1,
PLAYER_GREETING1,
PLAYER_GREETING_FEMALE1,
PLAYER_GOODBYE1, //(160)
PLAYER_GOODBYE_FEMALE1,
PLAYER_CLAP1,//applause
PLAYER_CLAP_FEMALE1,
PLAYER_CHEER1,//cheer
PLAYER_CHEER_FEMALE1,
PLAYER_DIRECTION1,
PLAYER_DIRECTION_FEMALE1,
PLAYER_GESTURE1,
PLAYER_GESTURE_FEMALE1,
PLAYER_UNKNOWN1, //(170)
PLAYER_UNKNOWN_FEMALE1,
PLAYER_CRY1,//
PLAYER_CRY_FEMALE1,
PLAYER_AWKWARD1,//awkward
PLAYER_AWKWARD_FEMALE1,
PLAYER_SEE1,
PLAYER_SEE_FEMALE1,
PLAYER_WIN1,
PLAYER_WIN_FEMALE1,
PLAYER_SMILE1, //(180)
PLAYER_SMILE_FEMALE1,
PLAYER_SLEEP1,
PLAYER_SLEEP_FEMALE1,
PLAYER_COLD1,
PLAYER_COLD_FEMALE1,
PLAYER_AGAIN1,
PLAYER_AGAIN_FEMALE1,
PLAYER_RESPECT1,//Respect
PLAYER_SALUTE1,// salute
PLAYER_SCISSORS, // Scissors (refer to SetActionClass() if the action order is out of order) (190)
PLAYER_ROCK, // Rock (add above PLAYER_SHOCK to keep loop from looping)
PLAYER_PAPER, // Paper
PLAYER_HUSTLE, // Japanese wrestler moves -_-
PLAYER_PROVOCATION,
PLAYER_LOOK_AROUND,
PLAYER_CHEERS,
PLAYER_KOREA_HANDCLAP,
PLAYER_POINT_DANCE,
PLAYER_RUSH1,
PLAYER_COME_UP,
PLAYER_SHOCK,
PLAYER_DIE1,
PLAYER_DIE2,
PLAYER_SIT1,
PLAYER_SIT2,
PLAYER_SIT_FEMALE1,
PLAYER_SIT_FEMALE2,
PLAYER_HEALING1,
PLAYER_HEALING_FEMALE1,
PLAYER_POSE1,
PLAYER_POSE_FEMALE1,
PLAYER_JACK_1, // Crazy action1
PLAYER_JACK_2, // Crazy action2
PLAYER_SANTA_1, // Jump action
PLAYER_SANTA_2, // Turn action
PLAYER_CHANGE_UP,
PLAYER_RECOVER_SKILL,
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
PLAYER_SKILL_THRUST ,
PLAYER_SKILL_STAMP ,
PLAYER_SKILL_GIANTSWING ,
PLAYER_SKILL_DARKSIDE_READY ,
PLAYER_SKILL_DARKSIDE_ATTACK ,
PLAYER_SKILL_DRAGONKICK ,
PLAYER_SKILL_DRAGONLORE ,
PLAYER_SKILL_ATT_UP_OURFORCES ,
PLAYER_SKILL_HP_UP_OURFORCES ,
// 레이지 파이터 관련 애니
PLAYER_RAGE_UNI_ATTACK ,
PLAYER_RAGE_UNI_ATTACK_ONE_RIGHT,
PLAYER_RAGE_UNI_RUN ,
PLAYER_RAGE_UNI_RUN_ONE_RIGHT ,
PLAYER_RAGE_UNI_STOP_ONE_RIGHT ,
PLAYER_RAGE_FENRIR ,
PLAYER_RAGE_FENRIR_TWO_SWORD ,
PLAYER_RAGE_FENRIR_ONE_RIGHT ,
PLAYER_RAGE_FENRIR_ONE_LEFT ,
PLAYER_RAGE_FENRIR_WALK ,
PLAYER_RAGE_FENRIR_WALK_ONE_RIGHT,
PLAYER_RAGE_FENRIR_WALK_ONE_LEFT,
PLAYER_RAGE_FENRIR_WALK_TWO_SWORD,
PLAYER_RAGE_FENRIR_RUN ,
PLAYER_RAGE_FENRIR_RUN_TWO_SWORD,
PLAYER_RAGE_FENRIR_RUN_ONE_RIGHT,
PLAYER_RAGE_FENRIR_RUN_ONE_LEFT ,
PLAYER_RAGE_FENRIR_STAND ,
PLAYER_RAGE_FENRIR_STAND_TWO_SWORD,
PLAYER_RAGE_FENRIR_STAND_ONE_RIGHT,
PLAYER_RAGE_FENRIR_STAND_ONE_LEFT,
PLAYER_RAGE_FENRIR_DAMAGE ,
PLAYER_RAGE_FENRIR_DAMAGE_TWO_SWORD,
PLAYER_RAGE_FENRIR_DAMAGE_ONE_RIGHT,
PLAYER_RAGE_FENRIR_DAMAGE_ONE_LEFT,
PLAYER_RAGE_FENRIR_ATTACK_RIGHT ,
PLAYER_STOP_RAGEFIGHTER ,
#endif //PBG_ADD_NEWCHAR_MONK_SKILL
MAX_PLAYER_ACTION,
};
//ai end
void CNewUIInGameShop::RenderDisplayItems()
{
EndBitmap();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glViewport2(0,0,WindowWidth,WindowHeight);
gluPerspective2(2.0f, (float)(WindowWidth)/(float)(WindowHeight), RENDER_ITEMVIEW_NEAR, RENDER_ITEMVIEW_FAR);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
GetOpenGLMatrix(CameraMatrix);
EnableDepthTest();
EnableDepthMask();
glClear(GL_DEPTH_BUFFER_BIT);
for(int i=0 ; i<g_InGameShopSystem->GetSizePackageAsDisplayPackage() ; i++ )
{
int iPosX = IGS_ITEMRENDER_POS_X_STANDAD+(IMAGE_IGS_VIEWDETAIL_BTN_DISTANCE_X*(i%IGS_NUM_ITEMS_WIDTH));
int iPosY = IGS_ITEMRENDER_POS_Y_STANDAD+(IMAGE_IGS_VIEWDETAIL_BTN_DISTANCE_Y*(i/IGS_NUM_ITEMS_HEIGHT));
RenderItem3D(iPosX, iPosY, IGS_ITEMRENDER_POS_WIDTH, IGS_ITEMRENDER_POS_HEIGHT, g_InGameShopSystem->GetPackageItemCode(i), 0, 0, 0, true);
}
UpdateMousePositionn();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
BeginBitmap();
}
//ai start
enum
{
PLAYER_SET,
PLAYER_STOP_MALE,
PLAYER_STOP_FEMALE,
PLAYER_STOP_SUMMONER, // јТИЇјъ»з Б¦АЪё®
PLAYER_STOP_SWORD,
PLAYER_STOP_TWO_HAND_SWORD,
PLAYER_STOP_SPEAR,
PLAYER_STOP_SCYTHE,
PLAYER_STOP_BOW,
PLAYER_STOP_CROSSBOW,
PLAYER_STOP_WAND, // їПµе µй°н Б¦АЪё®
PLAYER_STOP_FLY,
PLAYER_STOP_FLY_CROSSBOW,
PLAYER_STOP_RIDE,
PLAYER_STOP_RIDE_WEAPON,
PLAYER_WALK_MALE,
PLAYER_WALK_FEMALE,
PLAYER_WALK_SWORD,
PLAYER_WALK_TWO_HAND_SWORD,
PLAYER_WALK_SPEAR,
PLAYER_WALK_SCYTHE,
PLAYER_WALK_BOW,
PLAYER_WALK_CROSSBOW,
PLAYER_WALK_WAND, // їПµе µй°н °И±в
PLAYER_WALK_SWIM,
PLAYER_RUN,
PLAYER_RUN_SWORD,
PLAYER_RUN_TWO_SWORD,
PLAYER_RUN_TWO_HAND_SWORD,
PLAYER_RUN_SPEAR,
PLAYER_RUN_BOW,
PLAYER_RUN_CROSSBOW,
PLAYER_RUN_WAND, // їПµе µй°н ¶Щ±в
PLAYER_RUN_SWIM,
PLAYER_FLY,
PLAYER_FLY_CROSSBOW,
PLAYER_RUN_RIDE,
PLAYER_RUN_RIDE_WEAPON,
PLAYER_ATTACK_FIST, // БЦёФ їЎґПёЮАМјЗ
PLAYER_ATTACK_SWORD_RIGHT1,
PLAYER_ATTACK_SWORD_RIGHT2,
PLAYER_ATTACK_SWORD_LEFT1,
PLAYER_ATTACK_SWORD_LEFT2,
PLAYER_ATTACK_TWO_HAND_SWORD1,
PLAYER_ATTACK_TWO_HAND_SWORD2,
PLAYER_ATTACK_TWO_HAND_SWORD3,
PLAYER_ATTACK_SPEAR1,
PLAYER_ATTACK_SCYTHE1,
PLAYER_ATTACK_SCYTHE2,
PLAYER_ATTACK_SCYTHE3,
PLAYER_ATTACK_BOW,
PLAYER_ATTACK_CROSSBOW,
PLAYER_ATTACK_FLY_BOW,
PLAYER_ATTACK_FLY_CROSSBOW,
PLAYER_ATTACK_RIDE_SWORD,
PLAYER_ATTACK_RIDE_TWO_HAND_SWORD,
PLAYER_ATTACK_RIDE_SPEAR,
PLAYER_ATTACK_RIDE_SCYTHE,
PLAYER_ATTACK_RIDE_BOW,
PLAYER_ATTACK_RIDE_CROSSBOW,
PLAYER_ATTACK_SKILL_SWORD1,
PLAYER_ATTACK_SKILL_SWORD2,
PLAYER_ATTACK_SKILL_SWORD3,
PLAYER_ATTACK_SKILL_SWORD4,
PLAYER_ATTACK_SKILL_SWORD5,
PLAYER_ATTACK_SKILL_WHEEL,
PLAYER_ATTACK_SKILL_FURY_STRIKE,
PLAYER_SKILL_VITALITY,
PLAYER_SKILL_RIDER,
PLAYER_SKILL_RIDER_FLY,
PLAYER_ATTACK_SKILL_SPEAR,
PLAYER_ATTACK_ONETOONE,
PLAYER_SKILL_HELL_BEGIN,
PLAYER_SKILL_HELL_START,
PLAYER_ATTACK_END,
PLAYER_FLY_RIDE = PLAYER_ATTACK_END,
PLAYER_FLY_RIDE_WEAPON ,
PLAYER_DARKLORD_STAND , // ґЩЕ©·Оµе ґЩЕ©ЅєЗЗёґµй°н ј±в.
PLAYER_DARKLORD_WALK , // ґЩЕ©·Оµе ґЩЕ©ЅєЗЗёґµй°н °И±в.
PLAYER_STOP_RIDE_HORSE , // ґЩЕ©·Оµе °ш°Э ( ВоёЈґВ °Н ). (ЎЬ)
PLAYER_RUN_RIDE_HORSE , // ґЩЕ©·Оµе ЖДЖј јТИЇ. (ЎЬ)
PLAYER_ATTACK_STRIKE , // ґЩЕ©И¦Ѕє Её°н Б¤Бц. (ЎЬ)
PLAYER_ATTACK_TELEPORT , // ґЩЕ©И¦Ѕє ґЮё®±в.
PLAYER_ATTACK_RIDE_STRIKE , // ґЩЕ©И¦Ѕє Её°н °ш°Э ( ВоёЈґВ °Н ).
PLAYER_ATTACK_RIDE_TELEPORT , // ґЩЕ©И¦Ѕє Её°н ЖДЖј јТИЇ.
PLAYER_ATTACK_RIDE_HORSE_SWORD , // ґЩЕ©И¦Ѕє Её°н ЗСјХ °ш°Э.
PLAYER_ATTACK_RIDE_ATTACK_FLASH , // ґЩЕ©И¦Ѕє Её°н ј±ЕНљАЖ®¶уАМЕ©.
PLAYER_ATTACK_RIDE_ATTACK_MAGIC , // ґЩЕ©И¦Ѕє Её°н ё¶№э °ш°Э.
PLAYER_ATTACK_DARKHORSE , // ґЩЕ©И¦Ѕє ЅєЕі.
PLAYER_IDLE1_DARKHORSE , // (·О±ЧАОѕАїл)ґЩЕ©И¦Ѕє Её°н јБЕН ИЦµОёЈ±в
PLAYER_IDLE2_DARKHORSE , // (·О±ЧАОѕАїл)ґЩЕ©И¦Ѕє А§·О ґЩё® µй±в
PLAYER_FENRIR_ATTACK , // АП№Э°ш°Э - ѕЖ№«°Нµµ ѕИµз »уЕВ
PLAYER_FENRIR_ATTACK_DARKLORD_AQUA, // АП№Э°ш°Э - »зїлѕИЗФ
PLAYER_FENRIR_ATTACK_DARKLORD_STRIKE, // АП№Э°ш°Э - ґЩЕ©·Оµе ВоёЈ±в
PLAYER_FENRIR_ATTACK_DARKLORD_SWORD, // АП№Э°ш°Э - ґЩЕ©·Оµе Её°Э(ЗСјХ °ш°Э)
PLAYER_FENRIR_ATTACK_DARKLORD_TELEPORT, // АП№Э°ш°Э - ґЩЕ©·Оµе ЖДЖј јТИЇ
PLAYER_FENRIR_ATTACK_DARKLORD_FLASH, // АП№Э°ш°Э - ґЩЕ©·Оµе ѕЖДнѕЖЗГ·ЎЅ¬
PLAYER_FENRIR_ATTACK_TWO_SWORD, // АП№Э°ш°Э - µОјХД® °ш°Э(±в»з)
PLAYER_FENRIR_ATTACK_MAGIC, // АП№Э°ш°Э - ё¶№э °ш°Э(ё¶№э»з)
PLAYER_FENRIR_ATTACK_CROSSBOW, // АП№Э°ш°Э - ј®±Г °ш°Э(їдБ¤)
PLAYER_FENRIR_ATTACK_SPEAR, // АП№Э°ш°Э - Гў °ш°Э(±в»з)
PLAYER_FENRIR_ATTACK_ONE_SWORD, // АП№Э°ш°Э - ЗСјХД® °ш°Э(±в»з)
PLAYER_FENRIR_ATTACK_BOW, // АП№Э°ш°Э - И° °ш°Э(їдБ¤)
PLAYER_FENRIR_SKILL, // ЅєЕі°ш°Э - ёЗјХ
PLAYER_FENRIR_SKILL_TWO_SWORD, // ЅєЕі°ш°Э - ѕзјХД®
PLAYER_FENRIR_SKILL_ONE_RIGHT, // ЅєЕі°ш°Э - ЗСјХ їАёҐВК(100)
PLAYER_FENRIR_SKILL_ONE_LEFT, // ЅєЕі°ш°Э - ЗСјХ їЮВК
PLAYER_FENRIR_DAMAGE, // µҐ№МБц - ёЗјХ
PLAYER_FENRIR_DAMAGE_TWO_SWORD, // µҐ№МБц - ѕзјХД®
PLAYER_FENRIR_DAMAGE_ONE_RIGHT, // µҐ№МБц - ЗСјХ їАёҐВК
PLAYER_FENRIR_DAMAGE_ONE_LEFT, // µҐ№МБц - ЗСјХ їЮВК
PLAYER_FENRIR_RUN, // ґЮё®±в - ёЗјХ(110)
PLAYER_FENRIR_RUN_TWO_SWORD, // ґЮё®±в - ѕзјХД®
PLAYER_FENRIR_RUN_ONE_RIGHT, // ґЮё®±в - ЗСјХ їАёҐВК
PLAYER_FENRIR_RUN_ONE_LEFT, // ґЮё®±в - ЗСјХ їЮВК
PLAYER_FENRIR_RUN_MAGOM, // ґЮё®±в - ёЗјХ_ё¶°Л(114)
PLAYER_FENRIR_RUN_TWO_SWORD_MAGOM, // ґЮё®±в - ѕзјХ_ё¶°Л
PLAYER_FENRIR_RUN_ONE_RIGHT_MAGOM, // ґЮё®±в - їАёҐјХ_ё¶°Л
PLAYER_FENRIR_RUN_ONE_LEFT_MAGOM, // ґЮё®±в - їЮјХ_ё¶°Л
PLAYER_FENRIR_RUN_ELF, // ґЮё®±в - ёЗјХ_ї¤ЗБ
PLAYER_FENRIR_RUN_TWO_SWORD_ELF, // ґЮё®±в - ѕзјХ_ї¤ЗБ
PLAYER_FENRIR_RUN_ONE_RIGHT_ELF, // ґЮё®±в - їАёҐјХ_ї¤ЗБ
PLAYER_FENRIR_RUN_ONE_LEFT_ELF, // ґЮё®±в - їЮјХ_ї¤ЗБ
PLAYER_FENRIR_STAND, // Б¤Бц - ёЗјХ
PLAYER_FENRIR_STAND_TWO_SWORD, // Б¤Бц - ѕзјХД®
PLAYER_FENRIR_STAND_ONE_RIGHT, // Б¤Бц - ЗСјХ їАёҐВК
PLAYER_FENRIR_STAND_ONE_LEFT, // Б¤Бц - ЗСјХ їЮВК
PLAYER_FENRIR_WALK, // °И±в - ёЗјХ
PLAYER_FENRIR_WALK_TWO_SWORD, // °И±в - ѕзјХД®
PLAYER_FENRIR_WALK_ONE_RIGHT, // °И±в - ЗСјХ їАёҐВК
PLAYER_FENRIR_WALK_ONE_LEFT, // °И±в - ЗСјХ їЮВК(129)
PLAYER_ATTACK_BOW_UP , // И°·О ЗПґГ·О ЗвЗШј °ш°Э
PLAYER_ATTACK_CROSSBOW_UP , // ј®±ГАё·О ЗПґГ·О ЗвЗШј °ш°Э
PLAYER_ATTACK_FLY_BOW_UP , // іЇ°і ґЮ°н И°·О ЗПґГ·О ЗвЗШј °ш°Э
PLAYER_ATTACK_FLY_CROSSBOW_UP , // іЇ°і ґЮ°н ј®±ГАё·О ЗПґГ·О ЗвЗШј °ш°Э
PLAYER_ATTACK_RIDE_BOW_UP , // ё»Её°н И°·О ЗПґГ·О ЗвЗШј °ш°Э
PLAYER_ATTACK_RIDE_CROSSBOW_UP , // ё»Её°н ј®±ГАё·О ЗПґГ·О ЗвЗШј °ш°Э
PLAYER_ATTACK_ONE_FLASH , // ±вё¶°Л АПј¶°ш°Э.
PLAYER_ATTACK_RUSH , // ±в»з µ№°Э °ш°Э.
PLAYER_ATTACK_DEATH_CANNON , // №эё¶°Л ё¶ј¶±¤.
PLAYER_ATTACK_REMOVAL , // ё¶ЅєЕН ЅєЕі Б¦°Е ё¶№э.
PLAYER_ATTACK_STUN , // ЅєЕЩ ЗШБ¦
PLAYER_HIGH_SHOCK , // ЅЙ°ўЗС Гж°Э Иї°ъ.(142)
// ГЯ°ЎµЗґВ µОјХ №«±в ѕЦґПёЮАМјЗ.
PLAYER_STOP_TWO_HAND_SWORD_TWO ,
PLAYER_WALK_TWO_HAND_SWORD_TWO ,
PLAYER_RUN_TWO_HAND_SWORD_TWO ,
PLAYER_ATTACK_TWO_HAND_SWORD_TWO,
PLAYER_SKILL_HAND1 ,
PLAYER_SKILL_HAND2 ,
PLAYER_SKILL_WEAPON1 ,
PLAYER_SKILL_WEAPON2 , //(150)
PLAYER_SKILL_ELF1 , // ї¤ЗБ : °ш°Э·Вѕч/№Яѕо·Вѕч/Иъёµ
PLAYER_SKILL_TELEPORT ,
PLAYER_SKILL_FLASH ,
PLAYER_SKILL_INFERNO ,
PLAYER_SKILL_HELL ,
PLAYER_RIDE_SKILL ,
// јТИЇјъ»з Аьїл ЅєЕі.
PLAYER_SKILL_SLEEP ,
PLAYER_SKILL_SLEEP_UNI ,
PLAYER_SKILL_SLEEP_DINO ,
PLAYER_SKILL_SLEEP_FENRIR ,
PLAYER_SKILL_CHAIN_LIGHTNING ,
PLAYER_SKILL_CHAIN_LIGHTNING_UNI,
PLAYER_SKILL_CHAIN_LIGHTNING_DINO,
PLAYER_SKILL_CHAIN_LIGHTNING_FENRIR,
PLAYER_SKILL_LIGHTNING_ORB ,
PLAYER_SKILL_LIGHTNING_ORB_UNI ,
PLAYER_SKILL_LIGHTNING_ORB_DINO ,
PLAYER_SKILL_LIGHTNING_ORB_FENRIR,
PLAYER_SKILL_DRAIN_LIFE , // јТИЇјъ»з : µе·№АО¶уАМЗБ
PLAYER_SKILL_DRAIN_LIFE_UNI ,
PLAYER_SKILL_DRAIN_LIFE_DINO ,
PLAYER_SKILL_DRAIN_LIFE_FENRIR ,
// јТИЇјъ»з јТИЇ µїАЫ.
PLAYER_SKILL_SUMMON ,
PLAYER_SKILL_SUMMON_UNI ,
PLAYER_SKILL_SUMMON_DINO ,
PLAYER_SKILL_SUMMON_FENRIR ,
#ifdef ADD_NEW_SKILL_SEASON4
PLAYER_SKILL_BLOW_OF_DESTRUCTION, // ЖД±«АЗ АП°Э
PLAYER_SKILL_SWELL_OF_MP , // ё¶·В Бхґл
PLAYER_SKILL_MULTISHOT_BOW_STAND, // ёЦЖјј¦
PLAYER_SKILL_MULTISHOT_BOW_FLYING,
PLAYER_SKILL_MULTISHOT_CROSSBOW_STAND,
PLAYER_SKILL_MULTISHOT_CROSSBOW_FLYING,
PLAYER_SKILL_RECOVERY , // ЅЗµе Иёє№ Бхґл
PLAYER_SKILL_GIGANTICSTORM , // ±в°ЈЖЅЅєЕи
PLAYER_SKILL_FLAMESTRIKE , // ЗГ·ЎАУЅєЖ®¶уАМЕ©
PLAYER_SKILL_LIGHTNING_SHOCK , // ¶уАМЖ®ґЧјоЕ©
#endif // ADD_NEW_SKILL_SEASON4
#ifdef YDG_ADD_SKILL_RIDING_ANIMATIONS
PLAYER_SKILL_GIGANTICSTORM_UNI , // ±в°ЈЖЅЅєЕи ЕѕЅВГЯ°Ў
PLAYER_SKILL_GIGANTICSTORM_DINO ,
PLAYER_SKILL_GIGANTICSTORM_FENRIR ,
PLAYER_ATTACK_SKILL_WHEEL_UNI , // ИёїАё®єЈ±в єн·ЇµеѕоЕГ ЕѕЅВГЯ°Ў
PLAYER_ATTACK_SKILL_WHEEL_DINO ,
PLAYER_ATTACK_SKILL_WHEEL_FENRIR ,
#endif // YDG_ADD_SKILL_RIDING_ANIMATIONS
PLAYER_DEFENSE1 ,
PLAYER_GREETING1 ,
PLAYER_GREETING_FEMALE1 ,
PLAYER_GOODBYE1 , //(160)
PLAYER_GOODBYE_FEMALE1 ,
PLAYER_CLAP1 ,//№Ъјц
PLAYER_CLAP_FEMALE1 ,
PLAYER_CHEER1 ,//ИЇИЈ
PLAYER_CHEER_FEMALE1 ,
PLAYER_DIRECTION1 ,
PLAYER_DIRECTION_FEMALE1 ,
PLAYER_GESTURE1 ,
PLAYER_GESTURE_FEMALE1 ,
PLAYER_UNKNOWN1 , //(170)
PLAYER_UNKNOWN_FEMALE1 ,
PLAYER_CRY1 ,//
PLAYER_CRY_FEMALE1 ,
PLAYER_AWKWARD1 ,//ѕо»ц
PLAYER_AWKWARD_FEMALE1 ,
PLAYER_SEE1 ,
PLAYER_SEE_FEMALE1 ,
PLAYER_WIN1 ,
PLAYER_WIN_FEMALE1 ,
PLAYER_SMILE1 , //(180)
PLAYER_SMILE_FEMALE1 ,
PLAYER_SLEEP1 ,
PLAYER_SLEEP_FEMALE1 ,
PLAYER_COLD1 ,
PLAYER_COLD_FEMALE1 ,
PLAYER_AGAIN1 ,
PLAYER_AGAIN_FEMALE1 ,
PLAYER_RESPECT1 ,//°жАЗ
PLAYER_SALUTE1 ,//°ж·К
PLAYER_SCISSORS , // °ЎА§ (µїАЫ јшј ѕИёВАёёй SetActionClass() Вь°н) (190)
PLAYER_ROCK , // №ЩА§ (°ијУ ·зЗБ ѕИµЗ°Ф ЗП·Бёй PLAYER_SHOCKА§їЎ ГЯ°Ў)
PLAYER_PAPER , // єё
PLAYER_HUSTLE , // АПє» ·№ЅЅ·Ї µїАЫ -_-
PLAYER_PROVOCATION ,
PLAYER_LOOK_AROUND ,
PLAYER_CHEERS ,
#ifdef WORLDCUP_ADD
PLAYER_KOREA_HANDCLAP ,
PLAYER_POINT_DANCE ,
#endif //WORLDCUP_ADD
PLAYER_RUSH1 ,
PLAYER_COME_UP ,
PLAYER_SHOCK ,
PLAYER_DIE1 ,
PLAYER_DIE2 ,
PLAYER_SIT1 ,
PLAYER_SIT2 ,
PLAYER_SIT_FEMALE1 ,
PLAYER_SIT_FEMALE2 ,
PLAYER_HEALING1 ,
PLAYER_HEALING_FEMALE1 ,
PLAYER_POSE1 ,
PLAYER_POSE_FEMALE1 ,
PLAYER_JACK_1 , // ё¶єэАМ µїАЫ1
PLAYER_JACK_2 , // ё¶єэАМ µїАЫ2
PLAYER_SANTA_1 , // БЎЗБ µїАЫ
PLAYER_SANTA_2 , // ЕП µїАЫ
PLAYER_CHANGE_UP ,
#ifdef PJH_SEASON4_SPRITE_NEW_SKILL_RECOVER
PLAYER_RECOVER_SKILL ,
#endif //PJH_SEASON4_SPRITE_NEW_SKILL_RECOVER
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
PLAYER_SKILL_THRUST ,
PLAYER_SKILL_STAMP ,
PLAYER_SKILL_GIANTSWING ,
PLAYER_SKILL_DARKSIDE_READY ,
PLAYER_SKILL_DARKSIDE_ATTACK ,
PLAYER_SKILL_DRAGONKICK ,
PLAYER_SKILL_DRAGONLORE ,
PLAYER_SKILL_PHOENIX_SHOT ,
PLAYER_SKILL_ATT_UP_OURFORCES ,
PLAYER_SKILL_HP_UP_OURFORCES ,
// ·№АМБц ЖДАМЕН °ь·Г ѕЦґП
PLAYER_RAGE_UNI_ATTACK ,
PLAYER_RAGE_UNI_ATTACK_ONE_RIGHT,
PLAYER_RAGE_UNI_RUN ,
PLAYER_RAGE_UNI_RUN_ONE_RIGHT ,
PLAYER_RAGE_UNI_STOP_ONE_RIGHT ,
PLAYER_RAGE_FENRIR ,
PLAYER_RAGE_FENRIR_TWO_SWORD ,
PLAYER_RAGE_FENRIR_ONE_RIGHT ,
PLAYER_RAGE_FENRIR_ONE_LEFT ,
PLAYER_RAGE_FENRIR_WALK ,
PLAYER_RAGE_FENRIR_WALK_ONE_RIGHT,
PLAYER_RAGE_FENRIR_WALK_ONE_LEFT,
PLAYER_RAGE_FENRIR_WALK_TWO_SWORD,
PLAYER_RAGE_FENRIR_RUN ,
PLAYER_RAGE_FENRIR_RUN_TWO_SWORD,
PLAYER_RAGE_FENRIR_RUN_ONE_RIGHT,
PLAYER_RAGE_FENRIR_RUN_ONE_LEFT ,
PLAYER_RAGE_FENRIR_STAND ,
PLAYER_RAGE_FENRIR_STAND_TWO_SWORD,
PLAYER_RAGE_FENRIR_STAND_ONE_RIGHT,
PLAYER_RAGE_FENRIR_STAND_ONE_LEFT,
PLAYER_RAGE_FENRIR_DAMAGE ,
PLAYER_RAGE_FENRIR_DAMAGE_TWO_SWORD,
PLAYER_RAGE_FENRIR_DAMAGE_ONE_RIGHT,
PLAYER_RAGE_FENRIR_DAMAGE_ONE_LEFT,
PLAYER_RAGE_FENRIR_ATTACK_RIGHT ,
PLAYER_STOP_RAGEFIGHTER ,
#endif //PBG_ADD_NEWCHAR_MONK_SKILL
MAX_PLAYER_ACTION ,
};
//ai end
void SaveScreen()
{
GrabFirst = true;
/*if(!GrabFirst)
{
GrabFirst = true;
for(int i=0;i<10000;i++)
{
GrabScreen = i;
if(GrabScreen<10)
sprintf(GrabFileName,"Screen000%d",GrabScreen);
else if(GrabScreen<100)
sprintf(GrabFileName,"Screen00%d",GrabScreen);
else if(GrabScreen<1000)
sprintf(GrabFileName,"Screen0%d",GrabScreen);
else
sprintf(GrabFileName,"Screen%d",GrabScreen);
strcat( GrabFileName, lpszFileName);
FILE *fp = fopen(GrabFileName,"rb");
if(fp==NULL)
break;
else
fclose(fp);
}
}
else
{
if(GrabScreen<10)
sprintf(GrabFileName,"Screen000%d",GrabScreen);
else if(GrabScreen<100)
sprintf(GrabFileName,"Screen00%d",GrabScreen);
else if(GrabScreen<1000)
sprintf(GrabFileName,"Screen0%d",GrabScreen);
else
sprintf(GrabFileName,"Screen%d",GrabScreen);
strcat( GrabFileName, lpszFileName);
}*/
unsigned char *Buffer = new unsigned char [(int)WindowWidth*(int)WindowHeight*3];
glReadPixels(0,0,(int)WindowWidth,(int)WindowHeight,GL_RGB,GL_UNSIGNED_BYTE,Buffer);
char GrabFullPath[MAX_PATH]; // Masio
strcpy(GrabFullPath, "Screenshots\\"); // Masio
strcat(GrabFullPath, GrabFileName); // Masio
WriteJpeg(GrabFullPath, (int)WindowWidth, (int)WindowHeight, Buffer, 100);
SAFE_DELETE_ARRAY(Buffer);
GrabScreen++;
GrabScreen %= 10000;
}
void SaveScreen()
{
GrabFirst = true;
auto Buffer = new unsigned char [WindowWidth * WindowHeight * 4];
glReadPixels(0,0,WindowWidth,WindowHeight,GL_RGBA,GL_UNSIGNED_BYTE,&Buffer[0]);
auto BufferNew = new unsigned char[WindowWidth * WindowHeight * 3];
int counter = 0;
for(int i = 0; i < WindowWidth * WindowHeight * 4; i+=4)
{
BufferNew[counter + 0] = Buffer[i + 0];
BufferNew[counter + 1] = Buffer[i + 1];
BufferNew[counter + 2] = Buffer[i + 2];
counter += 3;
}
WriteJpeg(GrabFileName,WindowWidth,WindowHeight,&BufferNew[0],100);
SAFE_DELETE_ARRAY(Buffer);
SAFE_DELETE_ARRAY(BufferNew);
GrabScreen++;
GrabScreen %= 10000;
}
Jewel of Excelent added :D
(https://image.prntscr.com/image/9k66HFVDQUycZXQfPIEAJg.png)
(https://image.prntscr.com/image/JGaFg5q5ShCP1lbjul6d3g.png)
Fixed all error in load images. Check MuError.txt
(https://image.prntscr.com/image/Ou0PBULBTkGWnfuTNV4TbA.png)
Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
The "Developer" right now job custom xDDD bug + bug = ??
New developer = Nemesis
Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
The "Developer" right now job custom xDDD bug + bug = ??
New developer = Nemesis
wtf si Nemesis se la pasa metiendo nuevos personajes, nuevos skills jaja es más de lo mismo. Nada de fixs, nada de mejoras, sólo custom tras custom. Mejor dejá de chuparle un poco las medias que ya bastante crecidito tiene el ego.
bool CMapManager::InChaosCastle(int iMap)
{
if((this->WorldActive >= WD_18CHAOS_CASTLE && this->WorldActive <= WD_18CHAOS_CASTLE_END) || this->WorldActive == WD_53CAOSCASTLE_MASTER_LEVEL)
{
return true;
}
return false;
}
bool CMapManager::InBloodCastle(int iMap)
{
//if (iMap == -1) return false;
if((this->WorldActive >= WD_11BLOODCASTLE1 && this->WorldActive <= WD_11BLOODCASTLE_END)|| this->WorldActive == WD_52BLOODCASTLE_MASTER_LEVEL)
{
return true;
}
return false;
}
// MAX : 512
//ºí·¯µåij½½
//ºí·¯µåij½½1
84 1 "Chief Skeleton Warrior"
85 1 "Chief Skeleton Archer"
86 1 "Dark Skull Soldier"
87 1 "Giant Ogre"
88 1 "Red Skeleton Knight"
89 1 "Magic Skeleton"
//ºí·¯µåij½½2
90 1 "Chief Skeleton Warrior"
91 1 "Chief Skeleton Archer"
92 1 "Dark Skull Soldier"
93 1 "Giant Ogre"
94 1 "Red Skeleton Knight"
95 1 "Magic Skeleton"
//ºí·¯µåij½½3
96 1 "Chief Skeleton Warrior"
97 1 "Chief Skeleton Archer"
98 1 "Dark Skull Soldier"
99 1 "Giant Ogre"
111 1 "Red Skeleton Knight"
112 1 "Magic Skeleton"
//ºí·¯µåij½½4
113 1 "Chief Skeleton Warrior"
114 1 "Chief Skeleton Archer"
115 1 "Dark Skull Soldier"
116 1 "Giant Ogre"
117 1 "Red Skeleton Knight"
118 1 "Magic Skeleton"
//ºí·¯µåij½½5
119 1 "Chief Skeleton Warrior"
120 1 "Chief Skeleton Archer"
121 1 "Dark Skull Soldier"
122 1 "Giant Ogre"
123 1 "Red Skeleton Knight"
124 1 "Magic Skeleton"
//ºí·¯µåij½½6
125 1 "Chief Skeleton Warrior"
126 1 "Chief Skeleton Archer"
127 1 "Dark Skull Soldier"
128 1 "Giant Ogre"
129 1 "Red Skeleton Knight"
130 1 "Magic Skeleton"
131 1 "Castle Gate"
132 1 "Statue of Saint"
133 1 "Statue of Saint"
134 1 "Statue of Saint"
// ¹ÝÁöÀÇ ÀüÀï
135 1 "White wizard"
136 1 "Destructive ogre soldier"
137 1 "Destructive ogre archer"
//ºí·¯µåij½½7
138 1 "Chief Skeleton Warrior"
139 1 "Chief Skeleton Archer"
140 1 "Dark Skull Soldier"
141 1 "Giant Ogre"
142 1 "Red Skeleton Knight"
143 1 "Magic Skeleton"
//Ä®¸®¸¶_¿ÀÈÄ 7:05 2004-08-25
// 1 Ä®¸®¸¶
147 1 "Aegis"
148 1 "Rogue Centurion"
146 1 "Blood Soldier"
144 1 "Death Angel"
149 1 "Necron"
145 1 "Death Centurion"
160 1 "Schriker"
161 1 "Illusion of Kundun"
// 2 Ä®¸®¸¶
177 1 "Aegis"
178 1 "Rogue Centurion"
176 1 "Blood Soldier"
174 1 "Death Angel"
179 1 "Necron"
175 1 "Death Centurion"
180 1 "Schriker"
181 1 "Illusion of Kundun"
// 3 Ä®¸®¸¶
185 1 "Aegis"
186 1 "Rogue Centurion"
184 1 "Blood Soldier"
182 1 "Death Angel"
187 1 "Necron"
183 1 "Death Centurion"
188 1 "Schriker"
189 1 "Illusion of Kundun"
// 4 Ä®¸®¸¶
193 1 "Aegis"
194 1 "Rogue Centurion"
192 1 "Blood Soldier"
190 1 "Death Angel"
195 1 "Necron"
191 1 "Death Centurion"
196 1 "Schriker"
197 1 "Illusion of Kundun"
//Ä«¿À½ºÄ³½½ ¸ó½ºÅÍ.
162 1 "Chaos Castle 1"
163 1 "Chaos Castle 2"
164 1 "Chaos Castle 3"
165 1 "Chaos Castle 4"
166 1 "Chaos Castle 5"
167 1 "Chaos Castle 6"
168 1 "Chaos Castle 7"
169 1 "Chaos Castle 8"
170 1 "Chaos Castle 9"
171 1 "Chaos Castle 10"
172 1 "Chaos Castle 11"
173 1 "Chaos Castle 12"
83 1 "Golden Wheel"
82 1 "Golden Tantalos"
81 1 "Golden Vepar"
80 1 "Golden Lizard King"
79 1 "Golden Derkon"
78 1 "Golden Goblin"
77 1 "Phoenix of Darkness"
76 1 "Phoenix Darkness shield"
75 1 "Great Drakan"
74 1 "Alpha Crust"
73 1 "Drakan"
72 1 "Phantom Knight"
71 1 "Mega Crust"
70 1 "Queen Rainier"
69 1 "Alquamos"
68 1 "Molt"
57 1 "Iron Wheel"
58 1 "Tantalos"
59 1 "Zaikan"
60 1 "Bloody wolf"
61 1 "Beam Knight"
62 1 "Mutant"
63 1 "Death Beam Knight"
64 1 "Ogre archer"
65 1 "Elite Ogre"
66 1 "Cursed king"
67 1 "Metal Balrog"
36 1 "Shadow"
39 1 "Poison Shadow"
34 1 "Cursed Wizard"
41 1 "Death Cow"
37 1 "Devil"
40 1 "Death Knight"
35 1 "Death Gorgon"
38 1 "Balrog"
3 1 "Spider"
26 1 "Goblin"
2 1 "Budge Dragon"
27 1 "Chain Scorpion"
0 1 "Bull Fighter"
33 1 "Elite Goblin"
1 1 "Hound"
28 1 "Beetle Monster"
4 1 "Elite Bull Fighter"
29 1 "Hunter"
6 1 "LIch"
30 1 "Forest Monster"
31 1 "Agon"
7 1 "Giant"
32 1 "Stone Golem"
14 1 "Skeleton"
24 1 "Worm"
22 1 "Ice Monster"
23 1 "Hommerd"
12 1 "Larva"
21 1 "Assassin"
17 1 "Cyclops"
19 1 "Yeti"
11 1 "Ghost"
15 1 "Skeleton Archer"
20 1 "Elite Yeti"
5 1 "Hell Hound"
13 1 "Hell Spider"
16 1 "Chief Skeleton Warrior"
9 1 "Thunder Lich"
8 1 "Poison Bull Fighter"
10 1 "Dark Knight"
25 1 "Ice Queen"
18 1 "Gorgon"
45 1 "Bahamut"
46 1 "Vepar"
47 1 "Valkyrie"
48 1 "Lizard King"
49 1 "Hydra"
50 1 "Sea Worm"
51 1 "Great Bahamut"
52 1 "Silver Valkyrie"
43 1 "Golden Budge Dragon"
44 1 "Dragon"
53 1 "Golden Titan"
54 1 "Golden Soldier"
55 1 "Death King"
56 1 "Death Bone"
150 1 "Bali"
151 1 "Soldier"
152 1 "Magic stone of %s "
153 1 "Magic stone of %s "
154 1 "Magic stone of %s "
155 1 "Magic stone of %s "
156 1 "Magic stone of %s "
157 1 "Magic stone of %s "
158 1 "Magic stone of %s "
//158 1 "Shadow Knight" '- ½¦µµ¿ì³ªÀÌÆ®¶ó´Â ¸÷ÀÌ ¾øÀ¸¹Ç·Î
// ÇÔÁ¤ ( 100 ~ 110 )
100 1 "Lance"
101 1 "Iron Stick"
102 1 "Fire"
103 1 "Meteorite"
// °ø¼ºÆ®·¦.
104 1 "Trap"
105 1 "Canon Trap"
106 1 "Laser Trap"
200 1 "Soccer Ball"
// Å©¶óÀÌ¿ïÇÁ ·¹À̵å MVP (2005.9.23 ÀÌÇõÀç Ãß°¡)
204 1 "Wolf Status"
205 1 "Wolf Altar1"
206 1 "Wolf Altar2"
207 1 "Wolf Altar3"
208 1 "Wolf Altar4"
209 1 "Wolf Altar5"
215 1 "Shield"
// °ø¼º
216 1 "Crown"
217 1 "Crown Switch2"
218 1 "Crown Switch1"
219 1 "Castle Gate Switch"
220 1 "Gatekeeper"
221 1 "Slingshot attack"
222 1 "Slingshot defense"
//NPC
223 1 "Senior"
224 1 "Guardsman"
226 1 "Trainer"
//227 1 "McDonalds"
//228 1 "Popeyes"
229 1 "Marlon"
230 1 "Wandering Merchant Alex"
231 1 "Thompson Kenel"
232 1 "Archangel"
233 1 "Messenger of Archangel"
234 1 "Pet Trainer"
235 1 "Sebina the Priest"
236 1 "Golden Archer"
237 1 "Charon"
238 1 "Chaos Goblin"
239 1 "Arena Guard"
240 1 "Safety Guardian"
241 1 "Royal Guard Captain Lorence"
242 1 "Elf Lala"
243 1 "Eo the Craftsman"
244 1 "Caren the Barmaid"
245 1 "Wizard Izabel"
246 1 "Weapons Merchant Zienna"
247 1 "Guard"
248 1 "Wandering Merchant Martin"
249 1 "Guard"
250 1 "Wandering Merchant"
251 1 "Hanzo the Blacksmith"
252 1 ""
253 1 "Potion Girl Amy"
254 1 "Pasi the Mage"
255 1 "Lumen the Barmaid"
256 1 "Lahap"
257 1 "Shadow Phantom Soldier"
//Ä®¸®¸¶ ¸ó½ºÅÍ
// 5 Ä®¸®¸¶
263 1 "Aegis"
264 1 "Rogue Centurion"
262 1 "Blood Soldier"
260 1 "Death Angel"
265 1 "Necron"
261 1 "Death Centurion"
266 1 "Schriker"
267 1 "Illusion of Kundun"
// 6 Ä®¸®¸¶
271 1 "Aegis"
272 1 "Rogue Centurion"
270 1 "Blood Soldier"
268 1 "Death Angel"
273 1 "Necron"
269 1 "Death Centurion"
274 1 "Schriker"
275 1 "Kundun"
// °ø¼ºÀü ¸ó½ºÅÍ.
277 1 "Castle Gate"
278 1 "Life Stone"
283 1 "Guardian Statue"
285 1 "Guardian"
286 1 "Archer"
287 1 "Spearman"
288 1 "Canon Tower"
//½Ã·ÃÀÇ ¶¥
290 1 "Lizard Warrior"
291 1 "Fire Golem"
292 1 "Queen Bee"
293 1 "Poison Golem"
294 1 "Ax Warrior"
295 1 "Erohim"
296 1 "Monster7"
// ·Î·£Çù°îÀ̺¥Æ® ¸ó½ºÅÍ.
300 1 "Hero Mutant"
301 1 "Omega Wing"
302 1 "Axl Hero"
303 1 "Gigas Golem"
//¾ÆÀÌ´Ù. Å©¶óÀÌ¿ïÇÁ. ÀÒ¾î¹ö¸° Ä®¸®¸¶ Ãß°¡ ÀÛ¾÷_±âȹ/Á¤µ¿ÀÏ (¿ÀÈÄ 3:18 2005-07-26)
//¾ÆÀÌ´Ù ¸ó½ºÅÍ
308 1 "Death Tree"
307 1 "Forest Orc"
306 1 "Death Rider"
305 1 "Blue Golem"
304 1 "Witch Queen"
309 1 "Hell Maine"
//Å©¶óÀÌ¿ïÇÁ
310 1 "Hammer Scout"
311 1 "Lance Scout"
312 1 "Bow Scout"
313 1 "Werewolf"
314 1 "Scout(Hero)"
315 1 "Werewolf(Hero)"
316 1 "Balram"
317 1 "Soram"
// Å©¶óÀÌ¿ïÇÁ MVP ¸ó½ºÅÍ - Ãß°¡ 2005.11.23 (ÀÌÇõÀç)
340 1 "Dark Elf"
341 1 "Soram"
344 1 "Balram"
345 1 "Death spirit"
348 1 "Tanker"
349 1 "Balgass" //MVP º¸½º
//ÀÒ¾î¹ö¸° Ä®¸®¸¶
331 1 "Aegis"
332 1 "Rogue Centurion"
333 1 "Blood Soldier"
334 1 "Death Angel"
335 1 "Necron"
336 1 "Death Centurion"
337 1 "Schriker"
338 1 "Illusion of Kundun" //Á¦ 6Ä®¸®¸¶ À§Ä¡
// Å©¶óÀÌ¿ïÇÁ ¿ä»õ ¸Ê »óÀÎ _ 8¿ù 8ÀÏ ( ¿À½Â¾ð ) : Å©¶óÀÌ¿ïÇÁ ¿ä»õ Á¶·Ã»ç ¹× ¼¼¸£ºñ½º ¸÷ ¹øÈ£ ¼öÁ¤
// ¾Æ·¡ 2 NPC´Â ÃßÈÄ Ãß°¡
// ÆÖ ½Ã½ºÅÛ ÀÌÈÄ µî·Ï
//344 1 "Summoner"
// ³ë¸®¾ÆÀÇ Á¶ÇÕ °íºí¸°°ú µ¿ÀÏ. Á¶ÇÕ ¼öÁ¤ÇÑ ÀÌÈÄ ¹èÄ¡ ( Çö½ÃÁ¡¿¡¼´Â Ãß°¡ ±ÝÁö )
//345 1 "Chaos Goblin"
//À̺¥Æ® Àü¿ë NPC Ãß°¡ - 2006.1.23 (À̹ÎÁ¤)
258 1 "Luke the Helper"
//2006.4.17 Ãß°¡ (À̹ÎÁ¤)
259 1 "Oracle Layla"
//ÄÅõ¸£ ¸ó½ºÅÍ Ãß°¡ - 2006.5.16 (±èº¸°æ)
350 1 "Berserker"
351 1 "Splinter Wolf"
352 1 "Iron Rider"
353 1 "Satyros"
354 1 "Blade Hunter"
355 1 "Kentauros"
356 1 "Gigantis"
357 1 "Genocider"
358 1 "Persona"
359 1 "Twin Tale"
360 1 "Dreadfear"
361 1 "Nightmare"
362 1 "Maya Hand"
363 1 "Maya Hand"
364 1 "Maya"
//ÄÅõ¸£ npc
367 1 "Gateway Machine"
368 1 "Elpis"
//Á¶ÈÀÇ º¸¼® °ü·Ã npc
369 1 "Osbourne"
370 1 "Jerridon"
//ÈÀÌÆ®¿£Á© À̺¥Æ® ¾ÆÀÌÅÛ Áö±Þ NPC Ãß°¡ - 2006.8.23 À̹ÎÁ¤
371 1 "Leo the Helper"
//¿¤¸®Æ®ÇذñÀü»çº¯½Å¹ÝÁö NPC Ãß°¡ - 2006.9.5 À̹ÎÁ¤
372 1 "Elite Skull Soldier"
//ÇÒ·ÎÀ©À̺¥Æ® NPC Ãß°¡ - 2006.9.12 À̹ÎÁ¤
373 1 "Jack Olantern"
//Å©¸®½º¸¶½º º¯½Å¹ÝÁö¿ë NPC Ãß°¡ - 2006.11.30 À̹ÎÁ¤
374 1 "Santa"
// Ä«¿À½ºÄ«µå ´ã´ç
375 1 "Chaos Card Master"
// °ø¼ºÀü ½Å±Ô ¹°¾à NPC - 2007.1.22 ±èº¸°æ
376 1 "Pamela the Supplier"
377 1 "Angela the Supplier"
// ¼³³¯ º¹ÁÖ¸Ó´Ï À̸§
365 1 "Pouch of Blessing"
378 1 "GameMaster"
379 1 "Natasha the Firecracker Merchant"
//½Å±Ô À̺¥Æ®¸Ê
380 1 "Stone Statue"
381 1 "MU Allies General"
382 1 "Illusion Sorcerer Elder"
383 1 "Alliance Sacred Item Storage"
384 1 "Illusion Castle Sacred Item Storage"
385 1 "Mirage"
// ½Å±Ô À̺¥Æ®¸Ê 1 (·¹º§ 220~270)
386 1 "Illusion Sorcerer Spirit"
387 1 "Illusion Sorcerer Spirit"
388 1 "Illusion Sorcerer Spirit"
// ½Å±Ô À̺¥Æ®¸Ê 2 (·¹º§ 271~320)
389 1 "Illusion Sorcerer Spirit"
390 1 "Illusion Sorcerer Spirit"
391 1 "Illusion Sorcerer Spirit"
// ½Å±Ô À̺¥Æ®¸Ê 3 (·¹º§ 321~350)
392 1 "Illusion Sorcerer Spirit"
393 1 "Illusion Sorcerer Spirit"
394 1 "Illusion Sorcerer Spirit"
// ½Å±Ô À̺¥Æ®¸Ê 4 (·¹º§ 351~380)
395 1 "Illusion Sorcerer Spirit"
396 1 "Illusion Sorcerer Spirit"
397 1 "Illusion Sorcerer Spirit"
// ½Å±Ô À̺¥Æ®¸Ê 5 (·¹º§ 381~399)
398 1 "Illusion Sorcerer Spirit"
399 1 "Illusion Sorcerer Spirit"
400 1 "Illusion Sorcerer Spirit"
// ½Å±Ô À̺¥Æ®¸Ê 6 (·¹º§ 400)
401 1 "Illusion Sorcerer Spirit"
402 1 "Illusion Sorcerer Spirit"
403 1 "Illusion Sorcerer Spirit"
// À̺¥Æ®¸Ê ij¸¯ÅÍ º¯½Å¿ë À妽º
404 1 "MU Allies"
405 1 "Illusion Sorcerer"
// 3Â÷ üÀÎÁö¾÷
406 1 "Apostle Devin"
407 1 "Werewolf Quarel"
408 1 "Gatekeeper"
409 1 "Balram (Trainee Soldier)"
410 1 "Death Spirit (Trainee Soldier)"
411 1 "Soram (Trainee Soldier)"
412 1 "Dark Elf (Trainee Soldier)"
// Ãß¼®(2007)À̺¥Æ®
413 1 "Lunar Rabbit"
414 1 "Helper Ellen"
// ¿¤º£¶õµå NPC
415 1 "Silvia"
416 1 "Rhea"
417 1 "Marce"
// ¿¤º£¶õµå »ç³ÉÅÍ (2007-09-18 ±èÇöÁö)
418 1 "Strange Rabbit"
419 1 "Hideous Rabbit"
420 1 "Werewolf"
421 1 "Polluted Butterfly"
422 1 "Cursed Lich"
423 1 "Totem Golem"
424 1 "Grizzly"
425 1 "Captain Grizzly"
// À̺¥Æ®¸Ê µî±Þ Ãß°¡·Î ÀÎÇÑ ¸ó½ºÅÍ Ãß°¡(2007.10.16)
//Ä«¿À½ºÄ³½½7_È®Àå
426 1 "Chaos Castle13"
427 1 "Chaos Castle14"
//ºí·¯µåij½½8_È®Àå
428 1 "Chief Skeleton Warrior"
429 1 "Chief Skeleton Archer"
430 1 "Dark Skull Soldier"
431 1 "Giant Ogre"
432 1 "Red Skeleton Knight"
433 1 "Magic Skeleton"
//¾Ç¸¶ÀDZ¤Àå7_È®Àå
434 1 "Gigantis"
435 1 "Berserker"
436 1 "Balram (Trainee Soldier)"
437 1 "Soram (Trainee Soldier)"
438 1 "Persona"
439 1 "Dreadfear"
440 1 "Dark Elf"
// Æò¿ÂÀÇ ´Ë ¸ó½ºÅÍ Ãß°¡
441 1 "Sapi-Unus"
442 1 "Sapi-Duo"
443 1 "Sapi-Tres"
444 1 "Shadow Pawn"
445 1 "Shadow Knight"
446 1 "Shadow Look"
447 1 "Thunder Napin"
448 1 "Ghost Napin"
449 1 "Blaze Napin"
// º¢²ÉÀ̺¥Æ® npc Ãß°¡
450 1 "Cherry Blossom Spirit"
451 1 "Cherry Blossom Tree"
// ¼ÒÄÏ ½Ã½ºÅÛ NPC
452 1 "Seed Master"
453 1 "Seed Researcher"
// ¶óŬ¸®¿Â ¸ó½ºÅÍ Ãß°¡
454 1 "Ice Walker"
455 1 "Giant Mammoth"
456 1 "Ice Giant"
457 1 "Coolutin"
458 1 "Iron Knight"
459 1 "Selupan"
460 1 "Spider Eggs"
461 1 "Spider Eggs"
462 1 "Spider Eggs"
// ºÒ²ÉÁÖ¸Ó´Ï Ãß°¡
463 1 "Fire Flame Ghost"
// üÇè¼¹ö¿ë NPC Ãß°¡
464 1 "Re-Initialization Helper"
// »ó¿ëÈ 7ÁÖ³â À̺¥Æ® NPC Ãß°¡
478 1 "Delgado"
// Å©¸®½º¸¶½ºÀ̺¥Æ® NPC Ãß°¡(±¹³» Àû¿ë Ãß°¡)
465 1 "Santa Claus"
466 1 "Cursed Goblin"
467 1 "Snowman"
468 1 "Dasher"
469 1 "Kermit"
470 1 "Little Santa"
471 1 "Cupid"
472 1 "Prancer"
473 1 "Donner"
474 1 "Vixen"
475 1 "Blitzen"
476 1 "Cursed Santa"
477 1 "Transformed Snowman"
// PKÇÊµå ¸ó½ºÅÍ NPC Ãß°¡
479 1 "Doorkeeper Titus"
480 1 "Zombie Fighter"
481 1 "Zombie Fighter"
482 1 "Resurrected Gladiator"
483 1 "Resurrected Gladiator"
484 1 "Ash Slaughterer"
485 1 "Ash Slaughterer"
486 1 "Blood Assassin"
487 1 "Cruel Blood Assassin"
488 1 "Cruel Blood Assassin"
489 1 "Burning Lava Giant"
490 1 "Ruthless Lava Giant"
491 1 "Ruthless Lava Giant"
// °×ºí NPC Ãß°¡
492 1 "Moss"
// Ȳ±Ý±º´ÜÀ̺¥Æ®(ÀϺ»)
502 1 "Golden Rabbit"
493 1 "Golden Dark Knight"
494 1 "Golden Devil"
495 1 "Golden Stone Golem"
496 1 "Golden Crust"
497 1 "Golden Satyros"
498 1 "Golden Twin Tail"
499 1 "Golden Iron Knight"
500 1 "Golden Napin"
501 1 "Great Golden Dragon"
// 5¿ù ÇÁ¸®¹Ì¾ö ¾ÆÀÌÅÛ (ÆÒ´õº¯½Å¹ÝÁö)
503 1 "Transformed Panda"
// Á¦±¹ ¼öÈ£±º ¸ó½ºÅÍ NPC Ãß°¡
// ¸ó½ºÅÍ
504 1 "Gaion Kharein"
// ¸Ê º¸½º
505 1 "Jerint"
506 1 "Raymond"
507 1 "Erkanne"
508 1 "Destler"
509 1 "Vermont"
510 1 "Kato"
511 1 "Galia"
// Á¸ º¸½º
512 1 "Quartermaster"
513 1 "Combat Instructor"
514 1 "Knight Commander"
515 1 "Grand Wizard"
516 1 "Master Assassin"
517 1 "Cavalry Captain"
// ÀÏ¹Ý ¸ó½ºÅÍ
518 1 "Shield Bearer"
519 1 "Medic"
520 1 "Knights"
521 1 "Bodyguard"
// NPC
522 1 "Jerint the Assistant"
// ¿ÀºêÁ§Æ® NPC
523 1 "Trap"
524 1 "Castle Gate 1" //³»·Á°¡´Â ¼º¹®(ÆòÀÏ)
525 1 "Castle Gate 2" //ÆÄ±«µÇ´Â ¼º¹®(ÆòÀÏ)
526 1 "Stone Statue 1"
527 1 "Castle Gate 3" //³»·Á°¡´Â ¼º¹®(ÁÖ¸»)
528 1 "Castle Gate 4" //ÆÄ±«µÇ´Â ¼º¹®(ÁÖ¸»)
// µµÇð»¾î ¸ó½ºÅÍ NPC Ãß°¡
// ¸ó½ºÅÍ
// º¸½º ¸ó½ºÅÍ
529 1 "Furious Slaughterer"
530 1 "Slaughterer"
// ¹Ì¼Ç ¸ó½ºÅÍ
531 1 "Ice Walker"
// ÀÏ¹Ý ¸ó½ºÅÍ
532 1 "Larva"
533 1 "Doppelganger"
534 1 "Doppelganger Elf"
535 1 "Doppelganger Knight"
536 1 "Doppelganger Wizard"
537 1 "Doppelganger Magic Gladiator"
538 1 "Doppelganger Dark Lord"
539 1 "Doppelganger Summoner"
// NPC
540 1 "Lugard"
541 1 "Interim Reward Chest"
542 1 "Final Reward Chest"
// °Õ½º NPC
543 1 "Gens Duprian Steward"
544 1 "Gens Vanert Steward"
//·Î·£½ÃÀå NPC Ãß°¡ 2009.11.24 È«½Â¿í
545 1 "Christine the Merchant"
546 1 "Jeweler Raul"
547 1 "Market Union Member Julia"
//½ºÄÌ·¹Å溯½Å¹ÝÁö¿ë º¯½Å½ºÄÌ·¹Åæ Ãß°¡
548 1 "Transformed Skeleton"
549 1 "Bloody Orc"
550 1 "Bloody Death Rider"
551 1 "Bloody Golem"
552 1 "Bloody Witch Queen"
553 1 "Berserker Warrior"
554 1 "Kentauros Warrior"
555 1 "Gigantis Warrior"
556 1 "Genocider Warrior"
557 1 "Sapi Queen"
558 1 "Ice Napin"
559 1 "Shadow Master"
560 1 "Sapi Queen"
561 1 "Medusa"
562 1 "Dark Mammoth"
563 1 "Dark Giant"
564 1 "Dark Coolutin"
565 1 "Dark Iron Knight"
end
Gracias por el aporte @louis
Un ejemplo de ello es el txt que lleva los nombres de los npc que se encuentra en la ruta \Data\Local\Eng y lleva por nombre "NpcName_eng" con esto se arregla el problema de que al hablar con la NPC que da buff te desconecta o con la que esta en el bar de lorencia.
// MAX : 512
//블러드캐슬
//블러드캐슬1
84 1 "Chief Skeleton Warrior"
85 1 "Chief Skeleton Archer"
86 1 "Dark Skull Soldier"
87 1 "Giant Ogre"
88 1 "Red Skeleton Knight"
89 1 "Magic Skeleton"
//블러드캐슬2
90 1 "Chief Skeleton Warrior"
91 1 "Chief Skeleton Archer"
92 1 "Dark Skull Soldier"
93 1 "Giant Ogre"
94 1 "Red Skeleton Knight"
95 1 "Magic Skeleton"
//블러드캐슬3
96 1 "Chief Skeleton Warrior"
97 1 "Chief Skeleton Archer"
98 1 "Dark Skull Soldier"
99 1 "Giant Ogre"
111 1 "Red Skeleton Knight"
112 1 "Magic Skeleton"
//블러드캐슬4
113 1 "Chief Skeleton Warrior"
114 1 "Chief Skeleton Archer"
115 1 "Dark Skull Soldier"
116 1 "Giant Ogre"
117 1 "Red Skeleton Knight"
118 1 "Magic Skeleton"
//블러드캐슬5
119 1 "Chief Skeleton Warrior"
120 1 "Chief Skeleton Archer"
121 1 "Dark Skull Soldier"
122 1 "Giant Ogre"
123 1 "Red Skeleton Knight"
124 1 "Magic Skeleton"
//블러드캐슬6
125 1 "Chief Skeleton Warrior"
126 1 "Chief Skeleton Archer"
127 1 "Dark Skull Soldier"
128 1 "Giant Ogre"
129 1 "Red Skeleton Knight"
130 1 "Magic Skeleton"
131 1 "Castle Gate"
132 1 "Statue of Saint"
133 1 "Statue of Saint"
134 1 "Statue of Saint"
// 반지의 전쟁
135 1 "White wizard"
136 1 "Destructive ogre soldier"
137 1 "Destructive ogre archer"
//블러드캐슬7
138 1 "Chief Skeleton Warrior"
139 1 "Chief Skeleton Archer"
140 1 "Dark Skull Soldier"
141 1 "Giant Ogre"
142 1 "Red Skeleton Knight"
143 1 "Magic Skeleton"
//칼리마_오후 7:05 2004-08-25
// 1 칼리마
147 1 "Aegis"
148 1 "Rogue Centurion"
146 1 "Blood Soldier"
144 1 "Death Angel"
149 1 "Necron"
145 1 "Death Centurion"
160 1 "Schriker"
161 1 "Illusion of Kundun"
// 2 칼리마
177 1 "Aegis"
178 1 "Rogue Centurion"
176 1 "Blood Soldier"
174 1 "Death Angel"
179 1 "Necron"
175 1 "Death Centurion"
180 1 "Schriker"
181 1 "Illusion of Kundun"
// 3 칼리마
185 1 "Aegis"
186 1 "Rogue Centurion"
184 1 "Blood Soldier"
182 1 "Death Angel"
187 1 "Necron"
183 1 "Death Centurion"
188 1 "Schriker"
189 1 "Illusion of Kundun"
// 4 칼리마
193 1 "Aegis"
194 1 "Rogue Centurion"
192 1 "Blood Soldier"
190 1 "Death Angel"
195 1 "Necron"
191 1 "Death Centurion"
196 1 "Schriker"
197 1 "Illusion of Kundun"
//카오스캐슬 몬스터.
162 1 "Chaos Castle 1"
163 1 "Chaos Castle 2"
164 1 "Chaos Castle 3"
165 1 "Chaos Castle 4"
166 1 "Chaos Castle 5"
167 1 "Chaos Castle 6"
168 1 "Chaos Castle 7"
169 1 "Chaos Castle 8"
170 1 "Chaos Castle 9"
171 1 "Chaos Castle 10"
172 1 "Chaos Castle 11"
173 1 "Chaos Castle 12"
83 1 "Golden Wheel"
82 1 "Golden Tantalos"
81 1 "Golden Vepar"
80 1 "Golden Lizard King"
79 1 "Golden Derkon"
78 1 "Golden Goblin"
77 1 "Phoenix of Darkness"
76 1 "Phoenix Darkness shield"
75 1 "Great Drakan"
74 1 "Alpha Crust"
73 1 "Drakan"
72 1 "Phantom Knight"
71 1 "Mega Crust"
70 1 "Queen Rainier"
69 1 "Alquamos"
68 1 "Molt"
57 1 "Iron Wheel"
58 1 "Tantalos"
59 1 "Zaikan"
60 1 "Bloody wolf"
61 1 "Beam Knight"
62 1 "Mutant"
63 1 "Death Beam Knight"
64 1 "Ogre archer"
65 1 "Elite Ogre"
66 1 "Cursed king"
67 1 "Metal Balrog"
36 1 "Shadow"
39 1 "Poison Shadow"
34 1 "Cursed Wizard"
41 1 "Death Cow"
37 1 "Devil"
40 1 "Death Knight"
35 1 "Death Gorgon"
38 1 "Balrog"
3 1 "Spider"
26 1 "Goblin"
2 1 "Budge Dragon"
27 1 "Chain Scorpion"
0 1 "Bull Fighter"
33 1 "Elite Goblin"
1 1 "Hound"
28 1 "Beetle Monster"
4 1 "Elite Bull Fighter"
29 1 "Hunter"
6 1 "LIch"
30 1 "Forest Monster"
31 1 "Agon"
7 1 "Giant"
32 1 "Stone Golem"
14 1 "Skeleton"
24 1 "Worm"
22 1 "Ice Monster"
23 1 "Hommerd"
12 1 "Larva"
21 1 "Assassin"
17 1 "Cyclops"
19 1 "Yeti"
11 1 "Ghost"
15 1 "Skeleton Archer"
20 1 "Elite Yeti"
5 1 "Hell Hound"
13 1 "Hell Spider"
16 1 "Chief Skeleton Warrior"
9 1 "Thunder Lich"
8 1 "Poison Bull Fighter"
10 1 "Dark Knight"
25 1 "Ice Queen"
18 1 "Gorgon"
45 1 "Bahamut"
46 1 "Vepar"
47 1 "Valkyrie"
48 1 "Lizard King"
49 1 "Hydra"
50 1 "Sea Worm"
51 1 "Great Bahamut"
52 1 "Silver Valkyrie"
43 1 "Golden Budge Dragon"
44 1 "Dragon"
53 1 "Golden Titan"
54 1 "Golden Soldier"
55 1 "Death King"
56 1 "Death Bone"
150 1 "Bali"
151 1 "Soldier"
152 1 "Magic stone of %s "
153 1 "Magic stone of %s "
154 1 "Magic stone of %s "
155 1 "Magic stone of %s "
156 1 "Magic stone of %s "
157 1 "Magic stone of %s "
158 1 "Magic stone of %s "
//158 1 "Shadow Knight" '- 쉐도우나이트라는 몹이 없으므로
// 함정 ( 100 ~ 110 )
100 1 "Lance"
101 1 "Iron Stick"
102 1 "Fire"
103 1 "Meteorite"
// 공성트랩.
104 1 "Trap"
105 1 "Canon Trap"
106 1 "Laser Trap"
200 1 "Soccer Ball"
// 크라이울프 레이드 MVP (2005.9.23 이혁재 추가)
204 1 "Wolf Status"
205 1 "Wolf Altar1"
206 1 "Wolf Altar2"
207 1 "Wolf Altar3"
208 1 "Wolf Altar4"
209 1 "Wolf Altar5"
215 1 "Shield"
// 공성
216 1 "Crown"
217 1 "Crown Switch2"
218 1 "Crown Switch1"
219 1 "Castle Gate Switch"
220 1 "Gatekeeper"
221 1 "Slingshot attack"
222 1 "Slingshot defense"
//NPC
223 1 "Senior"
224 1 "Guardsman"
226 1 "Trainer"
//227 1 "McDonalds"
//228 1 "Popeyes"
229 1 "Marlon"
230 1 "Wandering Merchant Alex"
231 1 "Thompson Kenel"
232 1 "Archangel"
233 1 "Messenger of Archangel"
234 1 "Pet Trainer"
235 1 "Sebina the Priest"
236 1 "Golden Archer"
237 1 "Charon"
238 1 "Chaos Goblin"
239 1 "Arena Guard"
240 1 "Safety Guardian"
241 1 "Royal Guard Captain Lorence"
242 1 "Elf Lala"
243 1 "Eo the Craftsman"
244 1 "Caren the Barmaid"
245 1 "Wizard Izabel"
246 1 "Weapons Merchant Zienna"
247 1 "Guard"
248 1 "Wandering Merchant Martin"
249 1 "Guard"
250 1 "Wandering Merchant"
251 1 "Hanzo the Blacksmith"
252 1 ""
253 1 "Potion Girl Amy"
254 1 "Pasi the Mage"
255 1 "Lumen the Barmaid"
256 1 "Lahap"
257 1 "Shadow Phantom Soldier"
//칼리마 몬스터
// 5 칼리마
263 1 "Aegis"
264 1 "Rogue Centurion"
262 1 "Blood Soldier"
260 1 "Death Angel"
265 1 "Necron"
261 1 "Death Centurion"
266 1 "Schriker"
267 1 "Illusion of Kundun"
// 6 칼리마
271 1 "Aegis"
272 1 "Rogue Centurion"
270 1 "Blood Soldier"
268 1 "Death Angel"
273 1 "Necron"
269 1 "Death Centurion"
274 1 "Schriker"
275 1 "Kundun"
// 공성전 몬스터.
277 1 "Castle Gate"
278 1 "Life Stone"
283 1 "Guardian Statue"
285 1 "Guardian"
286 1 "Archer"
287 1 "Spearman"
288 1 "Canon Tower"
//시련의 땅
290 1 "Lizard Warrior"
291 1 "Fire Golem"
292 1 "Queen Bee"
293 1 "Poison Golem"
294 1 "Ax Warrior"
295 1 "Erohim"
296 1 "Monster7"
// 로랜협곡이벤트 몬스터.
300 1 "Hero Mutant"
301 1 "Omega Wing"
302 1 "Axl Hero"
303 1 "Gigas Golem"
//아이다. 크라이울프. 잃어버린 칼리마 추가 작업_기획/정동일 (오후 3:18 2005-07-26)
//아이다 몬스터
308 1 "Death Tree"
307 1 "Forest Orc"
306 1 "Death Rider"
305 1 "Blue Golem"
304 1 "Witch Queen"
309 1 "Hell Maine"
//크라이울프
310 1 "Hammer Scout"
311 1 "Lance Scout"
312 1 "Bow Scout"
313 1 "Werewolf"
314 1 "Scout(Hero)"
315 1 "Werewolf(Hero)"
316 1 "Balram"
317 1 "Soram"
// 크라이울프 MVP 몬스터 - 추가 2005.11.23 (이혁재)
340 1 "Dark Elf"
341 1 "Soram"
344 1 "Balram"
345 1 "Death spirit"
348 1 "Tanker"
349 1 "Balgass" //MVP 보스
//잃어버린 칼리마
331 1 "Aegis"
332 1 "Rogue Centurion"
333 1 "Blood Soldier"
334 1 "Death Angel"
335 1 "Necron"
336 1 "Death Centurion"
337 1 "Schriker"
338 1 "Illusion of Kundun" //제 6칼리마 위치
// 크라이울프 요새 맵 상인 _ 8월 8일 ( 오승언 ) : 크라이울프 요새 조련사 및 세르비스 몹 번호 수정
// 아래 2 NPC는 추후 추가
// 팻 시스템 이후 등록
//344 1 "Summoner"
// 노리아의 조합 고블린과 동일. 조합 수정한 이후 배치 ( 현시점에서는 추가 금지 )
//345 1 "Chaos Goblin"
//이벤트 전용 NPC 추가 - 2006.1.23 (이민정)
258 1 "Luke the Helper"
//2006.4.17 추가 (이민정)
259 1 "Oracle Layla"
//칸투르 몬스터 추가 - 2006.5.16 (김보경)
350 1 "Berserker"
351 1 "Splinter Wolf"
352 1 "Iron Rider"
353 1 "Satyros"
354 1 "Blade Hunter"
355 1 "Kentauros"
356 1 "Gigantis"
357 1 "Genocider"
358 1 "Persona"
359 1 "Twin Tale"
360 1 "Dreadfear"
361 1 "Nightmare"
362 1 "Maya Hand"
363 1 "Maya Hand"
364 1 "Maya"
//칸투르 npc
367 1 "Gateway Machine"
368 1 "Elpis"
//조화의 보석 관련 npc
369 1 "Osbourne"
370 1 "Jerridon"
//화이트엔젤 이벤트 아이템 지급 NPC 추가 - 2006.8.23 이민정
371 1 "Leo the Helper"
//엘리트해골전사변신반지 NPC 추가 - 2006.9.5 이민정
372 1 "Elite Skull Soldier"
//할로윈이벤트 NPC 추가 - 2006.9.12 이민정
373 1 "Jack Olantern"
//크리스마스 변신반지용 NPC 추가 - 2006.11.30 이민정
374 1 "Santa"
// 카오스카드 담당
375 1 "Chaos Card Master"
// 공성전 신규 물약 NPC - 2007.1.22 김보경
376 1 "Pamela the Supplier"
377 1 "Angela the Supplier"
// 설날 복주머니 이름
365 1 "Pouch of Blessing"
378 1 "GameMaster"
379 1 "Natasha the Firecracker Merchant"
//신규 이벤트맵
380 1 "Stone Statue"
381 1 "MU Allies General"
382 1 "Illusion Sorcerer Elder"
383 1 "Alliance Sacred Item Storage"
384 1 "Illusion Castle Sacred Item Storage"
385 1 "Mirage"
// 신규 이벤트맵 1 (레벨 220~270)
386 1 "Illusion Sorcerer Spirit"
387 1 "Illusion Sorcerer Spirit"
388 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 2 (레벨 271~320)
389 1 "Illusion Sorcerer Spirit"
390 1 "Illusion Sorcerer Spirit"
391 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 3 (레벨 321~350)
392 1 "Illusion Sorcerer Spirit"
393 1 "Illusion Sorcerer Spirit"
394 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 4 (레벨 351~380)
395 1 "Illusion Sorcerer Spirit"
396 1 "Illusion Sorcerer Spirit"
397 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 5 (레벨 381~399)
398 1 "Illusion Sorcerer Spirit"
399 1 "Illusion Sorcerer Spirit"
400 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 6 (레벨 400)
401 1 "Illusion Sorcerer Spirit"
402 1 "Illusion Sorcerer Spirit"
403 1 "Illusion Sorcerer Spirit"
// 이벤트맵 캐릭터 변신용 인덱스
404 1 "MU Allies"
405 1 "Illusion Sorcerer"
// 3차 체인지업
406 1 "Apostle Devin"
407 1 "Werewolf Quarel"
408 1 "Gatekeeper"
409 1 "Balram (Trainee Soldier)"
410 1 "Death Spirit (Trainee Soldier)"
411 1 "Soram (Trainee Soldier)"
412 1 "Dark Elf (Trainee Soldier)"
// 추석(2007)이벤트
413 1 "Lunar Rabbit"
414 1 "Helper Ellen"
// 엘베란드 NPC
415 1 "Silvia"
416 1 "Rhea"
417 1 "Marce"
// 엘베란드 사냥터 (2007-09-18 김현지)
418 1 "Strange Rabbit"
419 1 "Hideous Rabbit"
420 1 "Werewolf"
421 1 "Polluted Butterfly"
422 1 "Cursed Lich"
423 1 "Totem Golem"
424 1 "Grizzly"
425 1 "Captain Grizzly"
// 이벤트맵 등급 추가로 인한 몬스터 추가(2007.10.16)
//카오스캐슬7_확장
426 1 "Chaos Castle13"
427 1 "Chaos Castle14"
//블러드캐슬8_확장
428 1 "Chief Skeleton Warrior"
429 1 "Chief Skeleton Archer"
430 1 "Dark Skull Soldier"
431 1 "Giant Ogre"
432 1 "Red Skeleton Knight"
433 1 "Magic Skeleton"
//악마의광장7_확장
434 1 "Gigantis"
435 1 "Berserker"
436 1 "Balram (Trainee Soldier)"
437 1 "Soram (Trainee Soldier)"
438 1 "Persona"
439 1 "Dreadfear"
440 1 "Dark Elf"
// 평온의 늪 몬스터 추가
441 1 "Sapi-Unus"
442 1 "Sapi-Duo"
443 1 "Sapi-Tres"
444 1 "Shadow Pawn"
445 1 "Shadow Knight"
446 1 "Shadow Look"
447 1 "Thunder Napin"
448 1 "Ghost Napin"
449 1 "Blaze Napin"
// 벚꽃이벤트 npc 추가
450 1 "Cherry Blossom Spirit"
451 1 "Cherry Blossom Tree"
// 소켓 시스템 NPC
452 1 "Seed Master"
453 1 "Seed Researcher"
// 라클리온 몬스터 추가
454 1 "Ice Walker"
455 1 "Giant Mammoth"
456 1 "Ice Giant"
457 1 "Coolutin"
458 1 "Iron Knight"
459 1 "Selupan"
460 1 "Spider Eggs"
461 1 "Spider Eggs"
462 1 "Spider Eggs"
// 불꽃주머니 추가
463 1 "Fire Flame Ghost"
// 체험서버용 NPC 추가
//464 1 "Re-Initialization Helper"
// 상용화 7주년 이벤트 NPC 추가
478 1 "Delgado"
// 크리스마스이벤트 NPC 추가(국내 적용 추가)
465 1 "Santa Claus"
466 1 "Cursed Goblin"
467 1 "Snowman"
468 1 "Dasher"
469 1 "Kermit"
470 1 "Little Santa"
471 1 "Cupid"
472 1 "Prancer"
473 1 "Donner"
474 1 "Vixen"
475 1 "Blitzen"
476 1 "Cursed Santa"
477 1 "Transformed Snowman"
// PK필드 몬스터 NPC 추가
479 1 "Doorkeeper Titus"
480 1 "Zombie Fighter"
481 1 "Zombie Fighter"
482 1 "Resurrected Gladiator"
483 1 "Resurrected Gladiator"
484 1 "Ash Slaughterer"
485 1 "Ash Slaughterer"
486 1 "Blood Assassin"
487 1 "Cruel Blood Assassin"
488 1 "Cruel Blood Assassin"
489 1 "Burning Lava Giant"
490 1 "Ruthless Lava Giant"
491 1 "Ruthless Lava Giant"
// 겜블 NPC 추가
492 1 "Moss"
// 황금군단이벤트(일본)
502 1 "Golden Rabbit"
493 1 "Golden Dark Knight"
494 1 "Golden Devil"
495 1 "Golden Stone Golem"
496 1 "Golden Crust"
497 1 "Golden Satyros"
498 1 "Golden Twin Tail"
499 1 "Golden Iron Knight"
500 1 "Golden Napin"
501 1 "Great Golden Dragon"
// 5월 프리미엄 아이템 (팬더변신반지)
503 1 "Transformed Panda"
// 제국 수호군 몬스터 NPC 추가
// 몬스터
504 1 "Gaion Kharein"
// 맵 보스
505 1 "Jerint"
506 1 "Raymond"
507 1 "Erkanne"
508 1 "Destler"
509 1 "Vermont"
510 1 "Kato"
511 1 "Galia"
// 존 보스
512 1 "Quartermaster"
513 1 "Combat Instructor"
514 1 "Knight Commander"
515 1 "Grand Wizard"
516 1 "Master Assassin"
517 1 "Cavalry Captain"
// 일반 몬스터
518 1 "Shield Bearer"
519 1 "Medic"
520 1 "Knights"
521 1 "Bodyguard"
// NPC
522 1 "Jerint the Assistant"
// 오브젝트 NPC
523 1 "Trap"
524 1 "Castle Gate 1" //내려가는 성문(평일)
525 1 "Castle Gate 2" //파괴되는 성문(평일)
526 1 "Stone Statue 1"
527 1 "Castle Gate 3" //내려가는 성문(주말)
528 1 "Castle Gate 4" //파괴되는 성문(주말)
// 도플갱어 몬스터 NPC 추가
// 몬스터
// 보스 몬스터
529 1 "Furious Slaughterer"
530 1 "Slaughterer"
// 미션 몬스터
531 1 "Ice Walker"
// 일반 몬스터
532 1 "Larva"
533 1 "Doppelganger"
534 1 "Doppelganger Elf"
535 1 "Doppelganger Knight"
536 1 "Doppelganger Wizard"
537 1 "Doppelganger Magic Gladiator"
538 1 "Doppelganger Dark Lord"
539 1 "Doppelganger Summoner"
// NPC
540 1 "Lugard"
541 1 "Interim Reward Chest"
542 1 "Final Reward Chest"
// 겐스 NPC
543 1 "Gens Duprian Steward"
544 1 "Gens Vanert Steward"
//로랜시장 NPC 추가 2009.11.24 홍승욱
545 1 "Christine the General Goods Merchant"
546 1 "Jeweler Raul"
547 1 "Market Union Member Julia"
//스켈레톤변신반지용 변신스켈레톤 추가
548 1 "Transformed Skeleton"
549 1 "Bloody Orc"
550 1 "Bloody Death Rider"
551 1 "Bloody Golem"
552 1 "Bloody Witch Queen"
553 1 "Berserker Warrior"
554 1 "Kentauros Warrior"
555 1 "Gigantis Warrior"
556 1 "Genocider Warrior"
557 1 "Sapi Queen"
558 1 "Ice Napin"
559 1 "Shadow Master"
560 1 "Sapi Queen"
561 1 "Medusa"
562 1 "Dark Mammoth"
563 1 "Dark Giant"
564 1 "Dark Coolutin"
565 1 "Dark Iron Knight"
566 1 "Mercenary Guild Manager Tercia"
567 1 "Priestess Veina"
568 1 "Wandering Merchant Zyro"
// 칼루탄 몬스터 추가 2010-06-30 홍승욱
569 1 "Venomous Chain Scorpion"
570 1 "Bone Scorpion"
571 1 "Orcus"
572 1 "Gollock"
573 1 "Crypta"
574 1 "Crypos"
575 1 "Condra"
576 1 "Narcondra"
// 칼루탄 NPC 추가 2010-06-30 홍승욱
577 1 "Leina the General Goods Merchant"
578 1 "Weapons Merchant Bolo"
// 럭키아이템 NPC 추가 2010-09-01 이기수
579 1 "David"
end
Gracias por el aporte @louis
Un ejemplo de ello es el txt que lleva los nombres de los npc que se encuentra en la ruta \Data\Local\Eng y lleva por nombre "NpcName_eng" con esto se arregla el problema de que al hablar con la NPC que da buff te desconecta o con la que esta en el bar de lorencia.
te faltaria del 566 hasta el 585
Para cliente S6 Epi3Code: [Select]// MAX : 512
//블러드캐슬
//블러드캐슬1
84 1 "Chief Skeleton Warrior"
85 1 "Chief Skeleton Archer"
86 1 "Dark Skull Soldier"
87 1 "Giant Ogre"
88 1 "Red Skeleton Knight"
89 1 "Magic Skeleton"
//블러드캐슬2
90 1 "Chief Skeleton Warrior"
91 1 "Chief Skeleton Archer"
92 1 "Dark Skull Soldier"
93 1 "Giant Ogre"
94 1 "Red Skeleton Knight"
95 1 "Magic Skeleton"
//블러드캐슬3
96 1 "Chief Skeleton Warrior"
97 1 "Chief Skeleton Archer"
98 1 "Dark Skull Soldier"
99 1 "Giant Ogre"
111 1 "Red Skeleton Knight"
112 1 "Magic Skeleton"
//블러드캐슬4
113 1 "Chief Skeleton Warrior"
114 1 "Chief Skeleton Archer"
115 1 "Dark Skull Soldier"
116 1 "Giant Ogre"
117 1 "Red Skeleton Knight"
118 1 "Magic Skeleton"
//블러드캐슬5
119 1 "Chief Skeleton Warrior"
120 1 "Chief Skeleton Archer"
121 1 "Dark Skull Soldier"
122 1 "Giant Ogre"
123 1 "Red Skeleton Knight"
124 1 "Magic Skeleton"
//블러드캐슬6
125 1 "Chief Skeleton Warrior"
126 1 "Chief Skeleton Archer"
127 1 "Dark Skull Soldier"
128 1 "Giant Ogre"
129 1 "Red Skeleton Knight"
130 1 "Magic Skeleton"
131 1 "Castle Gate"
132 1 "Statue of Saint"
133 1 "Statue of Saint"
134 1 "Statue of Saint"
// 반지의 전쟁
135 1 "White wizard"
136 1 "Destructive ogre soldier"
137 1 "Destructive ogre archer"
//블러드캐슬7
138 1 "Chief Skeleton Warrior"
139 1 "Chief Skeleton Archer"
140 1 "Dark Skull Soldier"
141 1 "Giant Ogre"
142 1 "Red Skeleton Knight"
143 1 "Magic Skeleton"
//칼리마_오후 7:05 2004-08-25
// 1 칼리마
147 1 "Aegis"
148 1 "Rogue Centurion"
146 1 "Blood Soldier"
144 1 "Death Angel"
149 1 "Necron"
145 1 "Death Centurion"
160 1 "Schriker"
161 1 "Illusion of Kundun"
// 2 칼리마
177 1 "Aegis"
178 1 "Rogue Centurion"
176 1 "Blood Soldier"
174 1 "Death Angel"
179 1 "Necron"
175 1 "Death Centurion"
180 1 "Schriker"
181 1 "Illusion of Kundun"
// 3 칼리마
185 1 "Aegis"
186 1 "Rogue Centurion"
184 1 "Blood Soldier"
182 1 "Death Angel"
187 1 "Necron"
183 1 "Death Centurion"
188 1 "Schriker"
189 1 "Illusion of Kundun"
// 4 칼리마
193 1 "Aegis"
194 1 "Rogue Centurion"
192 1 "Blood Soldier"
190 1 "Death Angel"
195 1 "Necron"
191 1 "Death Centurion"
196 1 "Schriker"
197 1 "Illusion of Kundun"
//카오스캐슬 몬스터.
162 1 "Chaos Castle 1"
163 1 "Chaos Castle 2"
164 1 "Chaos Castle 3"
165 1 "Chaos Castle 4"
166 1 "Chaos Castle 5"
167 1 "Chaos Castle 6"
168 1 "Chaos Castle 7"
169 1 "Chaos Castle 8"
170 1 "Chaos Castle 9"
171 1 "Chaos Castle 10"
172 1 "Chaos Castle 11"
173 1 "Chaos Castle 12"
83 1 "Golden Wheel"
82 1 "Golden Tantalos"
81 1 "Golden Vepar"
80 1 "Golden Lizard King"
79 1 "Golden Derkon"
78 1 "Golden Goblin"
77 1 "Phoenix of Darkness"
76 1 "Phoenix Darkness shield"
75 1 "Great Drakan"
74 1 "Alpha Crust"
73 1 "Drakan"
72 1 "Phantom Knight"
71 1 "Mega Crust"
70 1 "Queen Rainier"
69 1 "Alquamos"
68 1 "Molt"
57 1 "Iron Wheel"
58 1 "Tantalos"
59 1 "Zaikan"
60 1 "Bloody wolf"
61 1 "Beam Knight"
62 1 "Mutant"
63 1 "Death Beam Knight"
64 1 "Ogre archer"
65 1 "Elite Ogre"
66 1 "Cursed king"
67 1 "Metal Balrog"
36 1 "Shadow"
39 1 "Poison Shadow"
34 1 "Cursed Wizard"
41 1 "Death Cow"
37 1 "Devil"
40 1 "Death Knight"
35 1 "Death Gorgon"
38 1 "Balrog"
3 1 "Spider"
26 1 "Goblin"
2 1 "Budge Dragon"
27 1 "Chain Scorpion"
0 1 "Bull Fighter"
33 1 "Elite Goblin"
1 1 "Hound"
28 1 "Beetle Monster"
4 1 "Elite Bull Fighter"
29 1 "Hunter"
6 1 "LIch"
30 1 "Forest Monster"
31 1 "Agon"
7 1 "Giant"
32 1 "Stone Golem"
14 1 "Skeleton"
24 1 "Worm"
22 1 "Ice Monster"
23 1 "Hommerd"
12 1 "Larva"
21 1 "Assassin"
17 1 "Cyclops"
19 1 "Yeti"
11 1 "Ghost"
15 1 "Skeleton Archer"
20 1 "Elite Yeti"
5 1 "Hell Hound"
13 1 "Hell Spider"
16 1 "Chief Skeleton Warrior"
9 1 "Thunder Lich"
8 1 "Poison Bull Fighter"
10 1 "Dark Knight"
25 1 "Ice Queen"
18 1 "Gorgon"
45 1 "Bahamut"
46 1 "Vepar"
47 1 "Valkyrie"
48 1 "Lizard King"
49 1 "Hydra"
50 1 "Sea Worm"
51 1 "Great Bahamut"
52 1 "Silver Valkyrie"
43 1 "Golden Budge Dragon"
44 1 "Dragon"
53 1 "Golden Titan"
54 1 "Golden Soldier"
55 1 "Death King"
56 1 "Death Bone"
150 1 "Bali"
151 1 "Soldier"
152 1 "Magic stone of %s "
153 1 "Magic stone of %s "
154 1 "Magic stone of %s "
155 1 "Magic stone of %s "
156 1 "Magic stone of %s "
157 1 "Magic stone of %s "
158 1 "Magic stone of %s "
//158 1 "Shadow Knight" '- 쉐도우나이트라는 몹이 없으므로
// 함정 ( 100 ~ 110 )
100 1 "Lance"
101 1 "Iron Stick"
102 1 "Fire"
103 1 "Meteorite"
// 공성트랩.
104 1 "Trap"
105 1 "Canon Trap"
106 1 "Laser Trap"
200 1 "Soccer Ball"
// 크라이울프 레이드 MVP (2005.9.23 이혁재 추가)
204 1 "Wolf Status"
205 1 "Wolf Altar1"
206 1 "Wolf Altar2"
207 1 "Wolf Altar3"
208 1 "Wolf Altar4"
209 1 "Wolf Altar5"
215 1 "Shield"
// 공성
216 1 "Crown"
217 1 "Crown Switch2"
218 1 "Crown Switch1"
219 1 "Castle Gate Switch"
220 1 "Gatekeeper"
221 1 "Slingshot attack"
222 1 "Slingshot defense"
//NPC
223 1 "Senior"
224 1 "Guardsman"
226 1 "Trainer"
//227 1 "McDonalds"
//228 1 "Popeyes"
229 1 "Marlon"
230 1 "Wandering Merchant Alex"
231 1 "Thompson Kenel"
232 1 "Archangel"
233 1 "Messenger of Archangel"
234 1 "Pet Trainer"
235 1 "Sebina the Priest"
236 1 "Golden Archer"
237 1 "Charon"
238 1 "Chaos Goblin"
239 1 "Arena Guard"
240 1 "Safety Guardian"
241 1 "Royal Guard Captain Lorence"
242 1 "Elf Lala"
243 1 "Eo the Craftsman"
244 1 "Caren the Barmaid"
245 1 "Wizard Izabel"
246 1 "Weapons Merchant Zienna"
247 1 "Guard"
248 1 "Wandering Merchant Martin"
249 1 "Guard"
250 1 "Wandering Merchant"
251 1 "Hanzo the Blacksmith"
252 1 ""
253 1 "Potion Girl Amy"
254 1 "Pasi the Mage"
255 1 "Lumen the Barmaid"
256 1 "Lahap"
257 1 "Shadow Phantom Soldier"
//칼리마 몬스터
// 5 칼리마
263 1 "Aegis"
264 1 "Rogue Centurion"
262 1 "Blood Soldier"
260 1 "Death Angel"
265 1 "Necron"
261 1 "Death Centurion"
266 1 "Schriker"
267 1 "Illusion of Kundun"
// 6 칼리마
271 1 "Aegis"
272 1 "Rogue Centurion"
270 1 "Blood Soldier"
268 1 "Death Angel"
273 1 "Necron"
269 1 "Death Centurion"
274 1 "Schriker"
275 1 "Kundun"
// 공성전 몬스터.
277 1 "Castle Gate"
278 1 "Life Stone"
283 1 "Guardian Statue"
285 1 "Guardian"
286 1 "Archer"
287 1 "Spearman"
288 1 "Canon Tower"
//시련의 땅
290 1 "Lizard Warrior"
291 1 "Fire Golem"
292 1 "Queen Bee"
293 1 "Poison Golem"
294 1 "Ax Warrior"
295 1 "Erohim"
296 1 "Monster7"
// 로랜협곡이벤트 몬스터.
300 1 "Hero Mutant"
301 1 "Omega Wing"
302 1 "Axl Hero"
303 1 "Gigas Golem"
//아이다. 크라이울프. 잃어버린 칼리마 추가 작업_기획/정동일 (오후 3:18 2005-07-26)
//아이다 몬스터
308 1 "Death Tree"
307 1 "Forest Orc"
306 1 "Death Rider"
305 1 "Blue Golem"
304 1 "Witch Queen"
309 1 "Hell Maine"
//크라이울프
310 1 "Hammer Scout"
311 1 "Lance Scout"
312 1 "Bow Scout"
313 1 "Werewolf"
314 1 "Scout(Hero)"
315 1 "Werewolf(Hero)"
316 1 "Balram"
317 1 "Soram"
// 크라이울프 MVP 몬스터 - 추가 2005.11.23 (이혁재)
340 1 "Dark Elf"
341 1 "Soram"
344 1 "Balram"
345 1 "Death spirit"
348 1 "Tanker"
349 1 "Balgass" //MVP 보스
//잃어버린 칼리마
331 1 "Aegis"
332 1 "Rogue Centurion"
333 1 "Blood Soldier"
334 1 "Death Angel"
335 1 "Necron"
336 1 "Death Centurion"
337 1 "Schriker"
338 1 "Illusion of Kundun" //제 6칼리마 위치
// 크라이울프 요새 맵 상인 _ 8월 8일 ( 오승언 ) : 크라이울프 요새 조련사 및 세르비스 몹 번호 수정
// 아래 2 NPC는 추후 추가
// 팻 시스템 이후 등록
//344 1 "Summoner"
// 노리아의 조합 고블린과 동일. 조합 수정한 이후 배치 ( 현시점에서는 추가 금지 )
//345 1 "Chaos Goblin"
//이벤트 전용 NPC 추가 - 2006.1.23 (이민정)
258 1 "Luke the Helper"
//2006.4.17 추가 (이민정)
259 1 "Oracle Layla"
//칸투르 몬스터 추가 - 2006.5.16 (김보경)
350 1 "Berserker"
351 1 "Splinter Wolf"
352 1 "Iron Rider"
353 1 "Satyros"
354 1 "Blade Hunter"
355 1 "Kentauros"
356 1 "Gigantis"
357 1 "Genocider"
358 1 "Persona"
359 1 "Twin Tale"
360 1 "Dreadfear"
361 1 "Nightmare"
362 1 "Maya Hand"
363 1 "Maya Hand"
364 1 "Maya"
//칸투르 npc
367 1 "Gateway Machine"
368 1 "Elpis"
//조화의 보석 관련 npc
369 1 "Osbourne"
370 1 "Jerridon"
//화이트엔젤 이벤트 아이템 지급 NPC 추가 - 2006.8.23 이민정
371 1 "Leo the Helper"
//엘리트해골전사변신반지 NPC 추가 - 2006.9.5 이민정
372 1 "Elite Skull Soldier"
//할로윈이벤트 NPC 추가 - 2006.9.12 이민정
373 1 "Jack Olantern"
//크리스마스 변신반지용 NPC 추가 - 2006.11.30 이민정
374 1 "Santa"
// 카오스카드 담당
375 1 "Chaos Card Master"
// 공성전 신규 물약 NPC - 2007.1.22 김보경
376 1 "Pamela the Supplier"
377 1 "Angela the Supplier"
// 설날 복주머니 이름
365 1 "Pouch of Blessing"
378 1 "GameMaster"
379 1 "Natasha the Firecracker Merchant"
//신규 이벤트맵
380 1 "Stone Statue"
381 1 "MU Allies General"
382 1 "Illusion Sorcerer Elder"
383 1 "Alliance Sacred Item Storage"
384 1 "Illusion Castle Sacred Item Storage"
385 1 "Mirage"
// 신규 이벤트맵 1 (레벨 220~270)
386 1 "Illusion Sorcerer Spirit"
387 1 "Illusion Sorcerer Spirit"
388 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 2 (레벨 271~320)
389 1 "Illusion Sorcerer Spirit"
390 1 "Illusion Sorcerer Spirit"
391 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 3 (레벨 321~350)
392 1 "Illusion Sorcerer Spirit"
393 1 "Illusion Sorcerer Spirit"
394 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 4 (레벨 351~380)
395 1 "Illusion Sorcerer Spirit"
396 1 "Illusion Sorcerer Spirit"
397 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 5 (레벨 381~399)
398 1 "Illusion Sorcerer Spirit"
399 1 "Illusion Sorcerer Spirit"
400 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 6 (레벨 400)
401 1 "Illusion Sorcerer Spirit"
402 1 "Illusion Sorcerer Spirit"
403 1 "Illusion Sorcerer Spirit"
// 이벤트맵 캐릭터 변신용 인덱스
404 1 "MU Allies"
405 1 "Illusion Sorcerer"
// 3차 체인지업
406 1 "Apostle Devin"
407 1 "Werewolf Quarel"
408 1 "Gatekeeper"
409 1 "Balram (Trainee Soldier)"
410 1 "Death Spirit (Trainee Soldier)"
411 1 "Soram (Trainee Soldier)"
412 1 "Dark Elf (Trainee Soldier)"
// 추석(2007)이벤트
413 1 "Lunar Rabbit"
414 1 "Helper Ellen"
// 엘베란드 NPC
415 1 "Silvia"
416 1 "Rhea"
417 1 "Marce"
// 엘베란드 사냥터 (2007-09-18 김현지)
418 1 "Strange Rabbit"
419 1 "Hideous Rabbit"
420 1 "Werewolf"
421 1 "Polluted Butterfly"
422 1 "Cursed Lich"
423 1 "Totem Golem"
424 1 "Grizzly"
425 1 "Captain Grizzly"
// 이벤트맵 등급 추가로 인한 몬스터 추가(2007.10.16)
//카오스캐슬7_확장
426 1 "Chaos Castle13"
427 1 "Chaos Castle14"
//블러드캐슬8_확장
428 1 "Chief Skeleton Warrior"
429 1 "Chief Skeleton Archer"
430 1 "Dark Skull Soldier"
431 1 "Giant Ogre"
432 1 "Red Skeleton Knight"
433 1 "Magic Skeleton"
//악마의광장7_확장
434 1 "Gigantis"
435 1 "Berserker"
436 1 "Balram (Trainee Soldier)"
437 1 "Soram (Trainee Soldier)"
438 1 "Persona"
439 1 "Dreadfear"
440 1 "Dark Elf"
// 평온의 늪 몬스터 추가
441 1 "Sapi-Unus"
442 1 "Sapi-Duo"
443 1 "Sapi-Tres"
444 1 "Shadow Pawn"
445 1 "Shadow Knight"
446 1 "Shadow Look"
447 1 "Thunder Napin"
448 1 "Ghost Napin"
449 1 "Blaze Napin"
// 벚꽃이벤트 npc 추가
450 1 "Cherry Blossom Spirit"
451 1 "Cherry Blossom Tree"
// 소켓 시스템 NPC
452 1 "Seed Master"
453 1 "Seed Researcher"
// 라클리온 몬스터 추가
454 1 "Ice Walker"
455 1 "Giant Mammoth"
456 1 "Ice Giant"
457 1 "Coolutin"
458 1 "Iron Knight"
459 1 "Selupan"
460 1 "Spider Eggs"
461 1 "Spider Eggs"
462 1 "Spider Eggs"
// 불꽃주머니 추가
463 1 "Fire Flame Ghost"
// 체험서버용 NPC 추가
//464 1 "Re-Initialization Helper"
// 상용화 7주년 이벤트 NPC 추가
478 1 "Delgado"
// 크리스마스이벤트 NPC 추가(국내 적용 추가)
465 1 "Santa Claus"
466 1 "Cursed Goblin"
467 1 "Snowman"
468 1 "Dasher"
469 1 "Kermit"
470 1 "Little Santa"
471 1 "Cupid"
472 1 "Prancer"
473 1 "Donner"
474 1 "Vixen"
475 1 "Blitzen"
476 1 "Cursed Santa"
477 1 "Transformed Snowman"
// PK필드 몬스터 NPC 추가
479 1 "Doorkeeper Titus"
480 1 "Zombie Fighter"
481 1 "Zombie Fighter"
482 1 "Resurrected Gladiator"
483 1 "Resurrected Gladiator"
484 1 "Ash Slaughterer"
485 1 "Ash Slaughterer"
486 1 "Blood Assassin"
487 1 "Cruel Blood Assassin"
488 1 "Cruel Blood Assassin"
489 1 "Burning Lava Giant"
490 1 "Ruthless Lava Giant"
491 1 "Ruthless Lava Giant"
// 겜블 NPC 추가
492 1 "Moss"
// 황금군단이벤트(일본)
502 1 "Golden Rabbit"
493 1 "Golden Dark Knight"
494 1 "Golden Devil"
495 1 "Golden Stone Golem"
496 1 "Golden Crust"
497 1 "Golden Satyros"
498 1 "Golden Twin Tail"
499 1 "Golden Iron Knight"
500 1 "Golden Napin"
501 1 "Great Golden Dragon"
// 5월 프리미엄 아이템 (팬더변신반지)
503 1 "Transformed Panda"
// 제국 수호군 몬스터 NPC 추가
// 몬스터
504 1 "Gaion Kharein"
// 맵 보스
505 1 "Jerint"
506 1 "Raymond"
507 1 "Erkanne"
508 1 "Destler"
509 1 "Vermont"
510 1 "Kato"
511 1 "Galia"
// 존 보스
512 1 "Quartermaster"
513 1 "Combat Instructor"
514 1 "Knight Commander"
515 1 "Grand Wizard"
516 1 "Master Assassin"
517 1 "Cavalry Captain"
// 일반 몬스터
518 1 "Shield Bearer"
519 1 "Medic"
520 1 "Knights"
521 1 "Bodyguard"
// NPC
522 1 "Jerint the Assistant"
// 오브젝트 NPC
523 1 "Trap"
524 1 "Castle Gate 1" //내려가는 성문(평일)
525 1 "Castle Gate 2" //파괴되는 성문(평일)
526 1 "Stone Statue 1"
527 1 "Castle Gate 3" //내려가는 성문(주말)
528 1 "Castle Gate 4" //파괴되는 성문(주말)
// 도플갱어 몬스터 NPC 추가
// 몬스터
// 보스 몬스터
529 1 "Furious Slaughterer"
530 1 "Slaughterer"
// 미션 몬스터
531 1 "Ice Walker"
// 일반 몬스터
532 1 "Larva"
533 1 "Doppelganger"
534 1 "Doppelganger Elf"
535 1 "Doppelganger Knight"
536 1 "Doppelganger Wizard"
537 1 "Doppelganger Magic Gladiator"
538 1 "Doppelganger Dark Lord"
539 1 "Doppelganger Summoner"
// NPC
540 1 "Lugard"
541 1 "Interim Reward Chest"
542 1 "Final Reward Chest"
// 겐스 NPC
543 1 "Gens Duprian Steward"
544 1 "Gens Vanert Steward"
//로랜시장 NPC 추가 2009.11.24 홍승욱
545 1 "Christine the General Goods Merchant"
546 1 "Jeweler Raul"
547 1 "Market Union Member Julia"
//스켈레톤변신반지용 변신스켈레톤 추가
548 1 "Transformed Skeleton"
549 1 "Bloody Orc"
550 1 "Bloody Death Rider"
551 1 "Bloody Golem"
552 1 "Bloody Witch Queen"
553 1 "Berserker Warrior"
554 1 "Kentauros Warrior"
555 1 "Gigantis Warrior"
556 1 "Genocider Warrior"
557 1 "Sapi Queen"
558 1 "Ice Napin"
559 1 "Shadow Master"
560 1 "Sapi Queen"
561 1 "Medusa"
562 1 "Dark Mammoth"
563 1 "Dark Giant"
564 1 "Dark Coolutin"
565 1 "Dark Iron Knight"
566 1 "Mercenary Guild Manager Tercia"
567 1 "Priestess Veina"
568 1 "Wandering Merchant Zyro"
// 칼루탄 몬스터 추가 2010-06-30 홍승욱
569 1 "Venomous Chain Scorpion"
570 1 "Bone Scorpion"
571 1 "Orcus"
572 1 "Gollock"
573 1 "Crypta"
574 1 "Crypos"
575 1 "Condra"
576 1 "Narcondra"
// 칼루탄 NPC 추가 2010-06-30 홍승욱
577 1 "Leina the General Goods Merchant"
578 1 "Weapons Merchant Bolo"
// 럭키아이템 NPC 추가 2010-09-01 이기수
579 1 "David"
585 1 "Scarecrow"
end
Sería más fácil si usan mi kayito Tools, abren el Monster.txt del muserver y exportan el NPCName(Eng).txt desde ahí directamente. De esa forma les queda sincronizado con los monsters del server :)
En kayito Tools tienen que ir a la opción MONSTER.
Sería más fácil si usan mi kayito Tools, abren el Monster.txt del muserver y exportan el NPCName(Eng).txt desde ahí directamente. De esa forma les queda sincronizado con los monsters del server :)
En kayito Tools tienen que ir a la opción MONSTER.
de hecho es muy util esa herramienta xD pero en mi caso la idea es upgradear al S6 epi 3, puedes hacer la exportación del archivo del S4 al S6 pero igual toca modificar la source para que no salga corrupto, este ejemplo de el NPCname.txt no da problemas por que no chequea el buffer, pero para otros caso no es necesario usar la herramienta
si quisiera usarla para el item.bmd no serviría sin modificar la source
5.2
#define MAX_CLASS 6
S6 epi 3
#define MAX_CLASS 7
antes de hacer custom o agregar bobadas mejor es enfocarse a reparar los errores asi sean pequeños
FixMasterLevel
(https://i.ibb.co/5LYYMWG/Screen-01-19-17-28-0000.jpg)
lo puedes dejar como una season 4.6 y queda chuloantes de hacer custom o agregar bobadas mejor es enfocarse a reparar los errores asi sean pequeños
FixMasterLevel
(https://i.ibb.co/5LYYMWG/Screen-01-19-17-28-0000.jpg)
Claro, si quieren rescatar estos archivos para que puedan ser usados en un servidor decente deberán primero antes que todo resolver todos los errores posibles, ya después cada quién podrá armar su repack con todos los custom que quieran.
Estos files lo veo más season 4 que season 5, me gusta la versión y con un main "limpio" y con toda su fuente creo que el provecho que se le puede sacar es bastante.
Está faltando a source do GetMainInfo drogado.
Vlw irmão.Está faltando a source do GetMainInfo drogado.
al parecer alguien no entendio que es esto. este es el main.exe original de webzen no usa ningun getmain de xteam. no tienes que cambiar nada ya que lo puedes hacer desde la source directamente, solo busca el string de la ip y cambiala por la tuya
AJJAJAJAJA LA GENTE no leeEstá faltando a source do GetMainInfo drogado.
al parecer alguien no entendio que es esto. este es el main.exe original de webzen no usa ningun getmain de xteam. no tienes que cambiar nada ya que lo puedes hacer desde la source directamente, solo busca el string de la ip y cambiala por la tuya
please client for files))
Incluso:
- Souce MuServer Update 15 louis emulator.
- Source Main 5.2 limpa.
- Muserver/cliente compátiveis.
Estou usando o vs 2019 Community e não está indo, será que é porque é a versão community ou isso não tem nada haver?please client for files))
siguen sin leer por que tema dice clarmente:Code: [Select]Incluso:
- Souce MuServer Update 15 louis emulator.
- Source Main 5.2 limpa.
- Muserver/cliente compátiveis.
solo es buscar Main_Source.rar/bin y esta el cliente
@Neves se compila en visual studio 2019 teniendo algunas lib del 2015
Estoy agregando las resoluciones HD, pero tengo este problema, no se donde encontrar para arreglarlo, alguien me da una mano o alguna solucion para que no aparezcan los bloues negros?
(https://i.imgur.com/xXniypT.jpg)
Edit: Solucionado!
(https://i.imgur.com/hT1BM1X.png)
Está faltando a source do GetMainInfo drogado.
al parecer alguien no entendio que es esto. este es el main.exe original de webzen no usa ningun getmain de xteam. no tienes que cambiar nada ya que lo puedes hacer desde la source directamente, solo busca el string de la ip y cambiala por la tuya
Correção NPC Nomelink please server+client
Correção Disconnect Shadow Phantom Soldier
(https://i.ibb.co/Tms6JQT/Screen-03-04-07-12-0002.jpg)
(https://i.ibb.co/b3RbzWy/Screen-03-04-07-12-0003.jpg)
(https://i.ibb.co/TbYvcvT/Screen-03-04-07-24-0008.jpg)
password unzip: tuservermu.com.veCitar
where's the client?
Client+Server+Sources
password unzip: tuservermu.com.veCitar
//HealthBar 100%
void RenderMonsterHP()
{
float Width = 38.f;
char Text[100];
for (int j = 0; j < MAX_CHARACTERS_CLIENT; ++j)
{
CHARACTER* c = &CharactersClient[j];
OBJECT* o = &c->Object;
vec3_t Position;
int ScreenX, ScreenY;
if (KIND_MONSTER == c->Object.Kind && MODEL_PLAYER != c->Object.Type && c->Object.Kind != KIND_TRAP)
{
BYTE LifePercent = 80;
Vector(o->Position[0], o->Position[1], o->Position[2] + o->BoundingBoxMax[2] + 100.f, Position);
Projection(Position, &ScreenX, &ScreenY);
ScreenX -= (int)(Width / 2);
if (o->Live && KIND_NPC != c->Object.Kind)
{
NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(c->Key, c->Object.Kind);
if (lpNewHealthBar == NULL)continue;
int LifePercent = lpNewHealthBar->rate ;
int ShieldPercent = lpNewHealthBar->rate2 ;
float iHP = (float)(LifePercent * 72) / 100;
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR_BACK, ScreenX, ScreenY - 5, 75.f, 5.f);
if(c->Dead != 0)
{
iHP -= c->Dead;
if (iHP <= 0)
{
iHP = 0;
}
}
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR, ScreenX + 2, ScreenY - 4, iHP, 3.f);
g_pRenderText->SetFont(g_hFont);
if (c->Dead != 0)
{
sprintf(Text, "%s die...", c->ID);
}
else
{
sprintf(Text, "%s", c->ID);
}
g_pRenderText->SetTextColor(255, 230, 210, 255);
g_pRenderText->RenderText(ScreenX, ScreenY - 13, Text, 75.f, 0, RT3_SORT_CENTER);
}
}
}
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}
(https://i.postimg.cc/ctMJYSS4/20220306100207.png) (https://postimg.cc/ctMJYSS4)
Client+Server+Sources
password unzip: tuservermu.com.veCitar
GetMain??ip config client??
alguien le sucede que al logearse si la cuenta es: test - test , poniendo de contraseña ( testttt ) o ( testuiii ) lo que sea ingresa igual y no indica " contraseña incorrecta "
alguien le sucede que al logearse si la cuenta es: test - test , poniendo de contraseña ( testttt ) o ( testuiii ) lo que sea ingresa igual y no indica " contraseña incorrecta "
si mal no estoy tienes que desactivar el modo dev
Estava tentando otimizar o cliente e conseguir fazer algumas modificações, irei postar em breve os arquivos "faltam revisão"
-Compatibilidade com windows 7~10 via código.
-Compatibilidade com GPU AMD/NVIDIA.
-Compatibilidade com processadores AMD/INTEL mais recentes.
-Atualização do OpenGL.
Updated.
removed unnecessary files and added backup of compatible database.
Updated.
removed unnecessary files and added backup of compatible database.
can you share your boost_1_75_0 folder ?
Has someone already separated the chat from the system messages?
if (MsgType != TYPE_SYSTEM_MESSAGE)
{
CMessageText* pAllMsgText = new CMessageText;
if (!pAllMsgText->Create(strID, strText1, MsgType))
delete pAllMsgText;
else
{
m_vecAllMsgs.push_back(pAllMsgText);
}
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
nScrollLinesNew++;
}else
if( (GetCurrentMsgType() == TYPE_ALL_MESSAGE || GetCurrentMsgType() == MsgType) && MsgType != TYPE_SYSTEM_MESSAGE)
{
nScrollLines++;
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
pvecMsgs = GetMsgs(MsgType);
if (pvecMsgs == NULL)
{
assert(!"Error chat 4");
return;
}
if (nScrollLinesNew > 0 && ((pvecMsgs->size() - (m_iCurrentRenderEndLineMsg + 1) - nScrollLinesNew) < 3))
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
else if (!m_bShowFrame)
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
}
bool SEASON3B::CNewUIChatLogWindow::RenderMessagesNew()
{
float fRenderPosX = m_WndPos.x, fRenderPosY = m_WndPos.y - m_WndSize.cy + SCROLL_TOP_BOTTOM_PART_HEIGHT;
type_vector_msgs* pvecMsgs = GetMsgs(TYPE_SYSTEM_MESSAGE);
if (pvecMsgs == NULL)
{
assert(!"empty chat!");
return false;
}
int iRenderStartLine = 0;
if (GetCurrentRenderEndLineMsg() >= m_nShowingLinesMsg)
{
iRenderStartLine = GetCurrentRenderEndLineMsg() - m_nShowingLinesMsg + 1;
}
else
{
fRenderPosY = fRenderPosY + FONT_LEADING + (SCROLL_MIDDLE_PART_HEIGHT * (m_nShowingLinesMsg - GetCurrentRenderEndLineMsg() - 1));
}
fRenderPosY -= 270;
BYTE byAlpha = 150;
if (m_bShowFrame) byAlpha = 100;
EnableAlphaTest();
for (int i = iRenderStartLine, s = 0; i <= GetCurrentRenderEndLineMsg(); i++, s++)
{
if (i < 0 && i >= (int)pvecMsgs->size()) break;
bool bRenderMessage = true;
g_pRenderText->SetFont(g_hFont);
g_pRenderText->SetBgColor(0, 0, 0, 150);
g_pRenderText->SetTextColor(100, 150, 255, 255);
CMessageText* pMsgText = (*pvecMsgs)[i];
if (bRenderMessage && !pMsgText->GetText().empty())
{
POINT ptRenderPos = { (long)fRenderPosX + (long)WND_LEFT_RIGHT_EDGE, (long)fRenderPosY + (long)FONT_LEADING + ((long)SCROLL_MIDDLE_PART_HEIGHT * (long)s) };
if (!pMsgText->GetID().empty())
{
if (m_bPointedMessage == true && m_iPointedMessageIndex == i)
{
g_pRenderText->SetBgColor(30, 30, 30, 180);
g_pRenderText->SetTextColor(255, 128, 255, 255);
}
std::string strIDUTF8 = "";
g_pMultiLanguage->ConvertANSIToUTF8OrViceVersa(strIDUTF8, (pMsgText->GetID()).c_str());
type_string strLine = strIDUTF8 + " : " + pMsgText->GetText();
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, strLine.c_str());
}
else
{
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, pMsgText->GetText().c_str());
}
}
}
DisableAlphaBlend();
return true;
}
Hello, anyone added Ragefighter, and standarts items for him, I have one problem, maybe anyone know how to fix and help me.
https://youtu.be/aTbIp3l_JJ4
Hola chicos, alguno me da una mano con este error por favor?
tengo entendido que tengo que vincular <boost_path>\stage\lib pero descargue el boost lo instale y agregue los path y sigue igual.
desde ya, gracias!
(https://i.ibb.co/5BvcmHF/listboost.png)
Hello, anyone added Ragefighter, and standarts items for him, I have one problem, maybe anyone know how to fix and help me.Serias tan amable de pasarme ese Word Lorencia?
https://youtu.be/aTbIp3l_JJ4
UPDATE:poderia compartilhar seu cliente de teste?
Source Main 5.2 (VS2022) + NvAPI + Intel Support
-Compatibilidade com windows 7~10 via código.
-Compatibilidade com GPU AMD/NVIDIA.
-Compatibilidade com processadores AMD/INTEL mais recentes.
- Suporte para Nvidia/AMD/Intel.
Modificados:
WinMain.cpp
Adicionados:
nvapi.h
NvApiDriverSettings.hModificados:- Suporte para processadores Intel mais recentes e melhorias no suporte de sistema operacional.
sysinfo.cpp
sysinfo.h
Adicionados:
intrinsics.h
platform.h
constants.h
How to fix?
tooltip disappeared in inventory
(https://i.imgur.com/9zB9zSI.jpeg)
char Name[30];
bool TwoHand;
WORD Level;
BYTE m_byItemSlot;
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
WORD m_wSkillIndex;
#else //PBG_ADD_NEWCHAR_MONK_SKILL
BYTE m_bySkillIndex;
#endif //PBG_ADD_NEWCHAR_MONK_SKILL
BYTE Width;
BYTE Height;
BYTE DamageMin;
BYTE DamageMax;
BYTE SuccessfulBlocking;
BYTE Defense;
BYTE MagicDefense;
BYTE WeaponSpeed;
BYTE WalkSpeed;
BYTE Durability;
BYTE MagicDur;
BYTE MagicPower;
WORD RequireStrength;
WORD RequireDexterity;
WORD RequireEnergy;
WORD RequireVitality;
WORD RequireCharisma;
WORD RequireLevel;
BYTE Value;
int iZen;
BYTE AttType;
BYTE RequireClass[MAX_CLASS];
BYTE Resistance[MAX_RESISTANCE];
How to fix?
tooltip disappeared in inventory
(https://i.imgur.com/9zB9zSI.jpeg)
Adicionei a correção á source feita por @Almdar estou focado em otimizar o cliente, más irei fazer correções futuramente e adicionar custom com #define como iventário visual etc... quero pegar tudo que já foi lançado de mu até agora e adicionar a essa source, más isso leva tempo e estou fazendo tudo sozinho....
Correção dos itens por @Almdar
Buscar en _struct.h a ITEM_ATTRIBUTE
remplazan lo que contiene la estructura por estoCode: [Select]char Name[30];
bool TwoHand;
WORD Level;
BYTE m_byItemSlot;
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
WORD m_wSkillIndex;
#else //PBG_ADD_NEWCHAR_MONK_SKILL
BYTE m_bySkillIndex;
#endif //PBG_ADD_NEWCHAR_MONK_SKILL
BYTE Width;
BYTE Height;
BYTE DamageMin;
BYTE DamageMax;
BYTE SuccessfulBlocking;
BYTE Defense;
BYTE MagicDefense;
BYTE WeaponSpeed;
BYTE WalkSpeed;
BYTE Durability;
BYTE MagicDur;
BYTE MagicPower;
WORD RequireStrength;
WORD RequireDexterity;
WORD RequireEnergy;
WORD RequireVitality;
WORD RequireCharisma;
WORD RequireLevel;
BYTE Value;
int iZen;
BYTE AttType;
BYTE RequireClass[MAX_CLASS];
BYTE Resistance[MAX_RESISTANCE];
Gracias por el aporte @louis
Un ejemplo de ello es el txt que lleva los nombres de los npc que se encuentra en la ruta \Data\Local\Eng y lleva por nombre "NpcName_eng" con esto se arregla el problema de que al hablar con la NPC que da buff te desconecta o con la que esta en el bar de lorencia.
te faltaria del 566 hasta el 585
Para cliente S6 Epi3Code: [Select]// MAX : 512
//블러드캐슬
//블러드캐슬1
84 1 "Chief Skeleton Warrior"
85 1 "Chief Skeleton Archer"
86 1 "Dark Skull Soldier"
87 1 "Giant Ogre"
88 1 "Red Skeleton Knight"
89 1 "Magic Skeleton"
//블러드캐슬2
90 1 "Chief Skeleton Warrior"
91 1 "Chief Skeleton Archer"
92 1 "Dark Skull Soldier"
93 1 "Giant Ogre"
94 1 "Red Skeleton Knight"
95 1 "Magic Skeleton"
//블러드캐슬3
96 1 "Chief Skeleton Warrior"
97 1 "Chief Skeleton Archer"
98 1 "Dark Skull Soldier"
99 1 "Giant Ogre"
111 1 "Red Skeleton Knight"
112 1 "Magic Skeleton"
//블러드캐슬4
113 1 "Chief Skeleton Warrior"
114 1 "Chief Skeleton Archer"
115 1 "Dark Skull Soldier"
116 1 "Giant Ogre"
117 1 "Red Skeleton Knight"
118 1 "Magic Skeleton"
//블러드캐슬5
119 1 "Chief Skeleton Warrior"
120 1 "Chief Skeleton Archer"
121 1 "Dark Skull Soldier"
122 1 "Giant Ogre"
123 1 "Red Skeleton Knight"
124 1 "Magic Skeleton"
//블러드캐슬6
125 1 "Chief Skeleton Warrior"
126 1 "Chief Skeleton Archer"
127 1 "Dark Skull Soldier"
128 1 "Giant Ogre"
129 1 "Red Skeleton Knight"
130 1 "Magic Skeleton"
131 1 "Castle Gate"
132 1 "Statue of Saint"
133 1 "Statue of Saint"
134 1 "Statue of Saint"
// 반지의 전쟁
135 1 "White wizard"
136 1 "Destructive ogre soldier"
137 1 "Destructive ogre archer"
//블러드캐슬7
138 1 "Chief Skeleton Warrior"
139 1 "Chief Skeleton Archer"
140 1 "Dark Skull Soldier"
141 1 "Giant Ogre"
142 1 "Red Skeleton Knight"
143 1 "Magic Skeleton"
//칼리마_오후 7:05 2004-08-25
// 1 칼리마
147 1 "Aegis"
148 1 "Rogue Centurion"
146 1 "Blood Soldier"
144 1 "Death Angel"
149 1 "Necron"
145 1 "Death Centurion"
160 1 "Schriker"
161 1 "Illusion of Kundun"
// 2 칼리마
177 1 "Aegis"
178 1 "Rogue Centurion"
176 1 "Blood Soldier"
174 1 "Death Angel"
179 1 "Necron"
175 1 "Death Centurion"
180 1 "Schriker"
181 1 "Illusion of Kundun"
// 3 칼리마
185 1 "Aegis"
186 1 "Rogue Centurion"
184 1 "Blood Soldier"
182 1 "Death Angel"
187 1 "Necron"
183 1 "Death Centurion"
188 1 "Schriker"
189 1 "Illusion of Kundun"
// 4 칼리마
193 1 "Aegis"
194 1 "Rogue Centurion"
192 1 "Blood Soldier"
190 1 "Death Angel"
195 1 "Necron"
191 1 "Death Centurion"
196 1 "Schriker"
197 1 "Illusion of Kundun"
//카오스캐슬 몬스터.
162 1 "Chaos Castle 1"
163 1 "Chaos Castle 2"
164 1 "Chaos Castle 3"
165 1 "Chaos Castle 4"
166 1 "Chaos Castle 5"
167 1 "Chaos Castle 6"
168 1 "Chaos Castle 7"
169 1 "Chaos Castle 8"
170 1 "Chaos Castle 9"
171 1 "Chaos Castle 10"
172 1 "Chaos Castle 11"
173 1 "Chaos Castle 12"
83 1 "Golden Wheel"
82 1 "Golden Tantalos"
81 1 "Golden Vepar"
80 1 "Golden Lizard King"
79 1 "Golden Derkon"
78 1 "Golden Goblin"
77 1 "Phoenix of Darkness"
76 1 "Phoenix Darkness shield"
75 1 "Great Drakan"
74 1 "Alpha Crust"
73 1 "Drakan"
72 1 "Phantom Knight"
71 1 "Mega Crust"
70 1 "Queen Rainier"
69 1 "Alquamos"
68 1 "Molt"
57 1 "Iron Wheel"
58 1 "Tantalos"
59 1 "Zaikan"
60 1 "Bloody wolf"
61 1 "Beam Knight"
62 1 "Mutant"
63 1 "Death Beam Knight"
64 1 "Ogre archer"
65 1 "Elite Ogre"
66 1 "Cursed king"
67 1 "Metal Balrog"
36 1 "Shadow"
39 1 "Poison Shadow"
34 1 "Cursed Wizard"
41 1 "Death Cow"
37 1 "Devil"
40 1 "Death Knight"
35 1 "Death Gorgon"
38 1 "Balrog"
3 1 "Spider"
26 1 "Goblin"
2 1 "Budge Dragon"
27 1 "Chain Scorpion"
0 1 "Bull Fighter"
33 1 "Elite Goblin"
1 1 "Hound"
28 1 "Beetle Monster"
4 1 "Elite Bull Fighter"
29 1 "Hunter"
6 1 "LIch"
30 1 "Forest Monster"
31 1 "Agon"
7 1 "Giant"
32 1 "Stone Golem"
14 1 "Skeleton"
24 1 "Worm"
22 1 "Ice Monster"
23 1 "Hommerd"
12 1 "Larva"
21 1 "Assassin"
17 1 "Cyclops"
19 1 "Yeti"
11 1 "Ghost"
15 1 "Skeleton Archer"
20 1 "Elite Yeti"
5 1 "Hell Hound"
13 1 "Hell Spider"
16 1 "Chief Skeleton Warrior"
9 1 "Thunder Lich"
8 1 "Poison Bull Fighter"
10 1 "Dark Knight"
25 1 "Ice Queen"
18 1 "Gorgon"
45 1 "Bahamut"
46 1 "Vepar"
47 1 "Valkyrie"
48 1 "Lizard King"
49 1 "Hydra"
50 1 "Sea Worm"
51 1 "Great Bahamut"
52 1 "Silver Valkyrie"
43 1 "Golden Budge Dragon"
44 1 "Dragon"
53 1 "Golden Titan"
54 1 "Golden Soldier"
55 1 "Death King"
56 1 "Death Bone"
150 1 "Bali"
151 1 "Soldier"
152 1 "Magic stone of %s "
153 1 "Magic stone of %s "
154 1 "Magic stone of %s "
155 1 "Magic stone of %s "
156 1 "Magic stone of %s "
157 1 "Magic stone of %s "
158 1 "Magic stone of %s "
//158 1 "Shadow Knight" '- 쉐도우나이트라는 몹이 없으므로
// 함정 ( 100 ~ 110 )
100 1 "Lance"
101 1 "Iron Stick"
102 1 "Fire"
103 1 "Meteorite"
// 공성트랩.
104 1 "Trap"
105 1 "Canon Trap"
106 1 "Laser Trap"
200 1 "Soccer Ball"
// 크라이울프 레이드 MVP (2005.9.23 이혁재 추가)
204 1 "Wolf Status"
205 1 "Wolf Altar1"
206 1 "Wolf Altar2"
207 1 "Wolf Altar3"
208 1 "Wolf Altar4"
209 1 "Wolf Altar5"
215 1 "Shield"
// 공성
216 1 "Crown"
217 1 "Crown Switch2"
218 1 "Crown Switch1"
219 1 "Castle Gate Switch"
220 1 "Gatekeeper"
221 1 "Slingshot attack"
222 1 "Slingshot defense"
//NPC
223 1 "Senior"
224 1 "Guardsman"
226 1 "Trainer"
//227 1 "McDonalds"
//228 1 "Popeyes"
229 1 "Marlon"
230 1 "Wandering Merchant Alex"
231 1 "Thompson Kenel"
232 1 "Archangel"
233 1 "Messenger of Archangel"
234 1 "Pet Trainer"
235 1 "Sebina the Priest"
236 1 "Golden Archer"
237 1 "Charon"
238 1 "Chaos Goblin"
239 1 "Arena Guard"
240 1 "Safety Guardian"
241 1 "Royal Guard Captain Lorence"
242 1 "Elf Lala"
243 1 "Eo the Craftsman"
244 1 "Caren the Barmaid"
245 1 "Wizard Izabel"
246 1 "Weapons Merchant Zienna"
247 1 "Guard"
248 1 "Wandering Merchant Martin"
249 1 "Guard"
250 1 "Wandering Merchant"
251 1 "Hanzo the Blacksmith"
252 1 ""
253 1 "Potion Girl Amy"
254 1 "Pasi the Mage"
255 1 "Lumen the Barmaid"
256 1 "Lahap"
257 1 "Shadow Phantom Soldier"
//칼리마 몬스터
// 5 칼리마
263 1 "Aegis"
264 1 "Rogue Centurion"
262 1 "Blood Soldier"
260 1 "Death Angel"
265 1 "Necron"
261 1 "Death Centurion"
266 1 "Schriker"
267 1 "Illusion of Kundun"
// 6 칼리마
271 1 "Aegis"
272 1 "Rogue Centurion"
270 1 "Blood Soldier"
268 1 "Death Angel"
273 1 "Necron"
269 1 "Death Centurion"
274 1 "Schriker"
275 1 "Kundun"
// 공성전 몬스터.
277 1 "Castle Gate"
278 1 "Life Stone"
283 1 "Guardian Statue"
285 1 "Guardian"
286 1 "Archer"
287 1 "Spearman"
288 1 "Canon Tower"
//시련의 땅
290 1 "Lizard Warrior"
291 1 "Fire Golem"
292 1 "Queen Bee"
293 1 "Poison Golem"
294 1 "Ax Warrior"
295 1 "Erohim"
296 1 "Monster7"
// 로랜협곡이벤트 몬스터.
300 1 "Hero Mutant"
301 1 "Omega Wing"
302 1 "Axl Hero"
303 1 "Gigas Golem"
//아이다. 크라이울프. 잃어버린 칼리마 추가 작업_기획/정동일 (오후 3:18 2005-07-26)
//아이다 몬스터
308 1 "Death Tree"
307 1 "Forest Orc"
306 1 "Death Rider"
305 1 "Blue Golem"
304 1 "Witch Queen"
309 1 "Hell Maine"
//크라이울프
310 1 "Hammer Scout"
311 1 "Lance Scout"
312 1 "Bow Scout"
313 1 "Werewolf"
314 1 "Scout(Hero)"
315 1 "Werewolf(Hero)"
316 1 "Balram"
317 1 "Soram"
// 크라이울프 MVP 몬스터 - 추가 2005.11.23 (이혁재)
340 1 "Dark Elf"
341 1 "Soram"
344 1 "Balram"
345 1 "Death spirit"
348 1 "Tanker"
349 1 "Balgass" //MVP 보스
//잃어버린 칼리마
331 1 "Aegis"
332 1 "Rogue Centurion"
333 1 "Blood Soldier"
334 1 "Death Angel"
335 1 "Necron"
336 1 "Death Centurion"
337 1 "Schriker"
338 1 "Illusion of Kundun" //제 6칼리마 위치
// 크라이울프 요새 맵 상인 _ 8월 8일 ( 오승언 ) : 크라이울프 요새 조련사 및 세르비스 몹 번호 수정
// 아래 2 NPC는 추후 추가
// 팻 시스템 이후 등록
//344 1 "Summoner"
// 노리아의 조합 고블린과 동일. 조합 수정한 이후 배치 ( 현시점에서는 추가 금지 )
//345 1 "Chaos Goblin"
//이벤트 전용 NPC 추가 - 2006.1.23 (이민정)
258 1 "Luke the Helper"
//2006.4.17 추가 (이민정)
259 1 "Oracle Layla"
//칸투르 몬스터 추가 - 2006.5.16 (김보경)
350 1 "Berserker"
351 1 "Splinter Wolf"
352 1 "Iron Rider"
353 1 "Satyros"
354 1 "Blade Hunter"
355 1 "Kentauros"
356 1 "Gigantis"
357 1 "Genocider"
358 1 "Persona"
359 1 "Twin Tale"
360 1 "Dreadfear"
361 1 "Nightmare"
362 1 "Maya Hand"
363 1 "Maya Hand"
364 1 "Maya"
//칸투르 npc
367 1 "Gateway Machine"
368 1 "Elpis"
//조화의 보석 관련 npc
369 1 "Osbourne"
370 1 "Jerridon"
//화이트엔젤 이벤트 아이템 지급 NPC 추가 - 2006.8.23 이민정
371 1 "Leo the Helper"
//엘리트해골전사변신반지 NPC 추가 - 2006.9.5 이민정
372 1 "Elite Skull Soldier"
//할로윈이벤트 NPC 추가 - 2006.9.12 이민정
373 1 "Jack Olantern"
//크리스마스 변신반지용 NPC 추가 - 2006.11.30 이민정
374 1 "Santa"
// 카오스카드 담당
375 1 "Chaos Card Master"
// 공성전 신규 물약 NPC - 2007.1.22 김보경
376 1 "Pamela the Supplier"
377 1 "Angela the Supplier"
// 설날 복주머니 이름
365 1 "Pouch of Blessing"
378 1 "GameMaster"
379 1 "Natasha the Firecracker Merchant"
//신규 이벤트맵
380 1 "Stone Statue"
381 1 "MU Allies General"
382 1 "Illusion Sorcerer Elder"
383 1 "Alliance Sacred Item Storage"
384 1 "Illusion Castle Sacred Item Storage"
385 1 "Mirage"
// 신규 이벤트맵 1 (레벨 220~270)
386 1 "Illusion Sorcerer Spirit"
387 1 "Illusion Sorcerer Spirit"
388 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 2 (레벨 271~320)
389 1 "Illusion Sorcerer Spirit"
390 1 "Illusion Sorcerer Spirit"
391 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 3 (레벨 321~350)
392 1 "Illusion Sorcerer Spirit"
393 1 "Illusion Sorcerer Spirit"
394 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 4 (레벨 351~380)
395 1 "Illusion Sorcerer Spirit"
396 1 "Illusion Sorcerer Spirit"
397 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 5 (레벨 381~399)
398 1 "Illusion Sorcerer Spirit"
399 1 "Illusion Sorcerer Spirit"
400 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 6 (레벨 400)
401 1 "Illusion Sorcerer Spirit"
402 1 "Illusion Sorcerer Spirit"
403 1 "Illusion Sorcerer Spirit"
// 이벤트맵 캐릭터 변신용 인덱스
404 1 "MU Allies"
405 1 "Illusion Sorcerer"
// 3차 체인지업
406 1 "Apostle Devin"
407 1 "Werewolf Quarel"
408 1 "Gatekeeper"
409 1 "Balram (Trainee Soldier)"
410 1 "Death Spirit (Trainee Soldier)"
411 1 "Soram (Trainee Soldier)"
412 1 "Dark Elf (Trainee Soldier)"
// 추석(2007)이벤트
413 1 "Lunar Rabbit"
414 1 "Helper Ellen"
// 엘베란드 NPC
415 1 "Silvia"
416 1 "Rhea"
417 1 "Marce"
// 엘베란드 사냥터 (2007-09-18 김현지)
418 1 "Strange Rabbit"
419 1 "Hideous Rabbit"
420 1 "Werewolf"
421 1 "Polluted Butterfly"
422 1 "Cursed Lich"
423 1 "Totem Golem"
424 1 "Grizzly"
425 1 "Captain Grizzly"
// 이벤트맵 등급 추가로 인한 몬스터 추가(2007.10.16)
//카오스캐슬7_확장
426 1 "Chaos Castle13"
427 1 "Chaos Castle14"
//블러드캐슬8_확장
428 1 "Chief Skeleton Warrior"
429 1 "Chief Skeleton Archer"
430 1 "Dark Skull Soldier"
431 1 "Giant Ogre"
432 1 "Red Skeleton Knight"
433 1 "Magic Skeleton"
//악마의광장7_확장
434 1 "Gigantis"
435 1 "Berserker"
436 1 "Balram (Trainee Soldier)"
437 1 "Soram (Trainee Soldier)"
438 1 "Persona"
439 1 "Dreadfear"
440 1 "Dark Elf"
// 평온의 늪 몬스터 추가
441 1 "Sapi-Unus"
442 1 "Sapi-Duo"
443 1 "Sapi-Tres"
444 1 "Shadow Pawn"
445 1 "Shadow Knight"
446 1 "Shadow Look"
447 1 "Thunder Napin"
448 1 "Ghost Napin"
449 1 "Blaze Napin"
// 벚꽃이벤트 npc 추가
450 1 "Cherry Blossom Spirit"
451 1 "Cherry Blossom Tree"
// 소켓 시스템 NPC
452 1 "Seed Master"
453 1 "Seed Researcher"
// 라클리온 몬스터 추가
454 1 "Ice Walker"
455 1 "Giant Mammoth"
456 1 "Ice Giant"
457 1 "Coolutin"
458 1 "Iron Knight"
459 1 "Selupan"
460 1 "Spider Eggs"
461 1 "Spider Eggs"
462 1 "Spider Eggs"
// 불꽃주머니 추가
463 1 "Fire Flame Ghost"
// 체험서버용 NPC 추가
//464 1 "Re-Initialization Helper"
// 상용화 7주년 이벤트 NPC 추가
478 1 "Delgado"
// 크리스마스이벤트 NPC 추가(국내 적용 추가)
465 1 "Santa Claus"
466 1 "Cursed Goblin"
467 1 "Snowman"
468 1 "Dasher"
469 1 "Kermit"
470 1 "Little Santa"
471 1 "Cupid"
472 1 "Prancer"
473 1 "Donner"
474 1 "Vixen"
475 1 "Blitzen"
476 1 "Cursed Santa"
477 1 "Transformed Snowman"
// PK필드 몬스터 NPC 추가
479 1 "Doorkeeper Titus"
480 1 "Zombie Fighter"
481 1 "Zombie Fighter"
482 1 "Resurrected Gladiator"
483 1 "Resurrected Gladiator"
484 1 "Ash Slaughterer"
485 1 "Ash Slaughterer"
486 1 "Blood Assassin"
487 1 "Cruel Blood Assassin"
488 1 "Cruel Blood Assassin"
489 1 "Burning Lava Giant"
490 1 "Ruthless Lava Giant"
491 1 "Ruthless Lava Giant"
// 겜블 NPC 추가
492 1 "Moss"
// 황금군단이벤트(일본)
502 1 "Golden Rabbit"
493 1 "Golden Dark Knight"
494 1 "Golden Devil"
495 1 "Golden Stone Golem"
496 1 "Golden Crust"
497 1 "Golden Satyros"
498 1 "Golden Twin Tail"
499 1 "Golden Iron Knight"
500 1 "Golden Napin"
501 1 "Great Golden Dragon"
// 5월 프리미엄 아이템 (팬더변신반지)
503 1 "Transformed Panda"
// 제국 수호군 몬스터 NPC 추가
// 몬스터
504 1 "Gaion Kharein"
// 맵 보스
505 1 "Jerint"
506 1 "Raymond"
507 1 "Erkanne"
508 1 "Destler"
509 1 "Vermont"
510 1 "Kato"
511 1 "Galia"
// 존 보스
512 1 "Quartermaster"
513 1 "Combat Instructor"
514 1 "Knight Commander"
515 1 "Grand Wizard"
516 1 "Master Assassin"
517 1 "Cavalry Captain"
// 일반 몬스터
518 1 "Shield Bearer"
519 1 "Medic"
520 1 "Knights"
521 1 "Bodyguard"
// NPC
522 1 "Jerint the Assistant"
// 오브젝트 NPC
523 1 "Trap"
524 1 "Castle Gate 1" //내려가는 성문(평일)
525 1 "Castle Gate 2" //파괴되는 성문(평일)
526 1 "Stone Statue 1"
527 1 "Castle Gate 3" //내려가는 성문(주말)
528 1 "Castle Gate 4" //파괴되는 성문(주말)
// 도플갱어 몬스터 NPC 추가
// 몬스터
// 보스 몬스터
529 1 "Furious Slaughterer"
530 1 "Slaughterer"
// 미션 몬스터
531 1 "Ice Walker"
// 일반 몬스터
532 1 "Larva"
533 1 "Doppelganger"
534 1 "Doppelganger Elf"
535 1 "Doppelganger Knight"
536 1 "Doppelganger Wizard"
537 1 "Doppelganger Magic Gladiator"
538 1 "Doppelganger Dark Lord"
539 1 "Doppelganger Summoner"
// NPC
540 1 "Lugard"
541 1 "Interim Reward Chest"
542 1 "Final Reward Chest"
// 겐스 NPC
543 1 "Gens Duprian Steward"
544 1 "Gens Vanert Steward"
//로랜시장 NPC 추가 2009.11.24 홍승욱
545 1 "Christine the General Goods Merchant"
546 1 "Jeweler Raul"
547 1 "Market Union Member Julia"
//스켈레톤변신반지용 변신스켈레톤 추가
548 1 "Transformed Skeleton"
549 1 "Bloody Orc"
550 1 "Bloody Death Rider"
551 1 "Bloody Golem"
552 1 "Bloody Witch Queen"
553 1 "Berserker Warrior"
554 1 "Kentauros Warrior"
555 1 "Gigantis Warrior"
556 1 "Genocider Warrior"
557 1 "Sapi Queen"
558 1 "Ice Napin"
559 1 "Shadow Master"
560 1 "Sapi Queen"
561 1 "Medusa"
562 1 "Dark Mammoth"
563 1 "Dark Giant"
564 1 "Dark Coolutin"
565 1 "Dark Iron Knight"
566 1 "Mercenary Guild Manager Tercia"
567 1 "Priestess Veina"
568 1 "Wandering Merchant Zyro"
// 칼루탄 몬스터 추가 2010-06-30 홍승욱
569 1 "Venomous Chain Scorpion"
570 1 "Bone Scorpion"
571 1 "Orcus"
572 1 "Gollock"
573 1 "Crypta"
574 1 "Crypos"
575 1 "Condra"
576 1 "Narcondra"
// 칼루탄 NPC 추가 2010-06-30 홍승욱
577 1 "Leina the General Goods Merchant"
578 1 "Weapons Merchant Bolo"
// 럭키아이템 NPC 추가 2010-09-01 이기수
579 1 "David"
585 1 "Scarecrow"
end
Sería más fácil si usan mi kayito Tools, abren el Monster.txt del muserver y exportan el NPCName(Eng).txt desde ahí directamente. De esa forma les queda sincronizado con los monsters del server :)
En kayito Tools tienen que ir a la opción MONSTER.
Hola gente, estoy como nene con zapatillas nueva con estos sources ... bueno, de seguro que lo que voy a aportar ya lo saben y lo han hecho. Pero capaz que hay gente como yo que recién empieza a ver los source (ya que antes me daba paja) y le sirve esto.
Primero que todo, hay muchos bugs y para solucionarlos creo que lo mejor que podemos hacer es ver como viajan los paquetes desde el cliente al servidor y viceversa. Por eso.. empece a armar la "consola debug log" como niño tonto, para ver los datos entrantes y salientes de la siguiente forma:
(https://i.ibb.co/HqmM82k/consola.png) (https://ibb.co/FzGfTWj)
(https://i.ibb.co/DC49q8h/Packetes-Recibido.png) (https://ibb.co/fpMkcnf)
Creo que esta tarea es muy amplia y lleva mucho tiempo, la cantidad de metodos y funciones son infinitas y una sola persona no creo que lo pueda tarminar de pulirlo. Además, ví mucho codigo que no tiene uso u ejecición.
Bueno, nada más.. ire armando los packetes de esta forma para entender más como matchean los datos y poder recién ahí solucionar errores. Cuando tenga más codigo lo compartire y seria bueno que entre todos armemos algo así.
Saludos y gracias a los de siempre que estan ahí aportando.
Hello, anyone added Ragefighter, and standarts items for him, I have one problem, maybe anyone know how to fix and help me.
https://youtu.be/aTbIp3l_JJ4
Hello, anyone added Ragefighter, and standarts items for him, I have one problem, maybe anyone know how to fix and help me.
https://youtu.be/aTbIp3l_JJ4
esos guantes quieren volar XP
typedef struct {
PBMSG_HEADER Header;
WORD Level;
WORD LevelUpPoint;
DWORD Experience;
DWORD NextExperience;
WORD Strength;
WORD Dexterity;
WORD Vitality;
WORD Energy;
WORD Leadership;
WORD Life;
WORD MaxLife;
WORD Mana;
WORD MaxMana;
WORD BP;
WORD MaxBP;
WORD Shield;
WORD MaxShield;
WORD FruitAddPoint;
WORD MaxFruitAddPoint;
WORD FruitSubPoint;
WORD MaxFruitSubPoint;
//EXTRA
DWORD ViewReset;
DWORD ViewPoint;
DWORD ViewCurHP;
DWORD ViewMaxHP;
DWORD ViewCurMP;
DWORD ViewMaxMP;
DWORD ViewCurBP;
DWORD ViewMaxBP;
DWORD ViewCurSD;
DWORD ViewMaxSD;
DWORD ViewStrength;
DWORD ViewDexterity;
DWORD ViewVitality;
DWORD ViewEnergy;
DWORD ViewLeadership;
} PRECEIVE_ADD_POINT_, * LPPRECEIVE_ADD_POINT_;
void ReceiveAddPoint_(BYTE* ReceiveBuffer)
{
LPPRECEIVE_ADD_POINT_ Data = (LPPRECEIVE_ADD_POINT_)ReceiveBuffer;
CharacterAttribute->LevelUpPoint = Data->LevelUpPoint;
CharacterAttribute->Strength = Data->Strength;
CharacterAttribute->Dexterity = Data->Dexterity;
CharacterAttribute->Vitality = Data->Vitality;
CharacterAttribute->LifeMax = Data->MaxLife;
CharacterAttribute->Energy = Data->Energy;
CharacterAttribute->ManaMax = Data->MaxMana;
CharacterAttribute->Charisma = Data->Leadership;
CharacterAttribute->SkillManaMax = Data->MaxBP;
CharacterAttribute->ShieldMax = Data->MaxShield;
CharacterMachine->CalculateAll();
}
case 0x52:
Receive_Master_LevelGetSkill(ReceiveBuffer);
break;"
case 0xE0:
ReceiveAddPoint_(ReceiveBuffer);
break;
Estoy agregando las resoluciones HD, pero tengo este problema, no se donde encontrar para arreglarlo, alguien me da una mano o alguna solucion para que no aparezcan los bloues negros?
(https://i.imgur.com/xXniypT.jpg)
Edit: Solucionado!
(https://i.imgur.com/hT1BM1X.png)
Estou colocando DirectX irei postar em breve
Estou colocando DirectX irei postar em breve
Are you finish this or in progress?
seria bom ver isso.Estou colocando DirectX irei postar em breve
Are you finish this or in progress?
Preciso converter toda a renderização de imagem de OpenGL pra DirectX, já consegui converter partes da interface porém é um processo demorado pois têm muita coisa pra modificar... estou fazendo progresso.. já consegui por imgui que será util pra administrar eventos e afins.. consegui achar uma forma de colocar iventário de Earings/Auxiliares e afins. tenho planos pra agora no natal liberar essa source, porêm entendo que isso será usado por pessoas que estão abituadas ás maneiras antigas de edição, etc... pretendo adaptar algumas coisas pra ser possível customizar.
Estoy agregando las resoluciones HD, pero tengo este problema, no se donde encontrar para arreglarlo, alguien me da una mano o alguna solucion para que no aparezcan los bloues negros?
(https://i.imgur.com/xXniypT.jpg)
Edit: Solucionado!
(https://i.imgur.com/hT1BM1X.png)
Can you tell us how you fixed it ?
Update:
Thanks Already Fixed.
Estoy agregando las resoluciones HD, pero tengo este problema, no se donde encontrar para arreglarlo, alguien me da una mano o alguna solucion para que no aparezcan los bloues negros?
(https://i.imgur.com/xXniypT.jpg)
Edit: Solucionado!
(https://i.imgur.com/hT1BM1X.png)
(https://i.imgur.com/1Jhwsde.png)
why don't you scroll down below that post to see the answer sueno
Can you tell us how you fixed it ?
Update:
Thanks Already Fixed.
Can you post the code? thank you
Width = (float)GetScreenWidth()/640.f;// * 0.1f;
if ( battleCastle::InBattleCastle2( Hero->Object.Position ) && ( Hero->Object.Position[0]<17100.f || Hero->Object.Position[0]>18300.f ) )
{
CameraViewFar = 5100.f;// * 0.1f;
CameraViewNear = CameraViewFar*0.19f;//0.22
CameraViewTarget = CameraViewFar*0.47f;//0.47
WidthFar = 2250.f*Width; // 1140.f
WidthNear = 1840.f*Width; // 540.f
}
else
{
CameraViewFar = 3300.f;// * 0.1f;
CameraViewNear = CameraViewFar*0.19f;//0.22
CameraViewTarget = CameraViewFar*0.47f;//0.47
WidthFar = 1300.f*Width; // 1140.f
WidthNear = 1880.f*Width; // 540.f
}
Fix camera on map Valley of Loren
(https://i.imgur.com/Ozuqw29.png)
1600x900
void CreateFrustrum2D(vec3_t Position)Code: [Select]Width = (float)GetScreenWidth()/640.f;// * 0.1f;
if ( battleCastle::InBattleCastle2( Hero->Object.Position ) && ( Hero->Object.Position[0]<17100.f || Hero->Object.Position[0]>18300.f ) )
{
CameraViewFar = 5100.f;// * 0.1f;
CameraViewNear = CameraViewFar*0.19f;//0.22
CameraViewTarget = CameraViewFar*0.47f;//0.47
WidthFar = 2250.f*Width; // 1140.f
WidthNear = 1840.f*Width; // 540.f
}
else
{
CameraViewFar = 3300.f;// * 0.1f;
CameraViewNear = CameraViewFar*0.19f;//0.22
CameraViewTarget = CameraViewFar*0.47f;//0.47
WidthFar = 1300.f*Width; // 1140.f
WidthNear = 1880.f*Width; // 540.f
}
Dowgrade to Season 3 90%
(https://i.imgur.com/z5vnlEV.png)
https://imgur.com/a/AiuX3VU
LoadBitmap( "Interface\\newui_msgbox_back.jpg", IMAGE_COMMAND_BASE_WINDOW_BACK, GL_LINEAR );
thank so much @kayito, you can share select server source, I tried resetting the login screen position according to the source and coordinates you shared but no success
thank so much @kayito, you can share select server source, I tried resetting the login screen position according to the source and coordinates you shared but no success
Here you have the example on the 1.04e source. You can find the similarities and adapt it to the S5 source
https://tuservermu.com.ve/index.php?topic=52798
And here you have the example for the Select Character
https://tuservermu.com.ve/index.php?topic=52799
Fix camera on map Valley of Loren
(https://i.imgur.com/Ozuqw29.png)
1600x900
void CreateFrustrum2D(vec3_t Position)Code: [Select]Width = (float)GetScreenWidth()/640.f;// * 0.1f;
if ( battleCastle::InBattleCastle2( Hero->Object.Position ) && ( Hero->Object.Position[0]<17100.f || Hero->Object.Position[0]>18300.f ) )
{
CameraViewFar = 5100.f;// * 0.1f;
CameraViewNear = CameraViewFar*0.19f;//0.22
CameraViewTarget = CameraViewFar*0.47f;//0.47
WidthFar = 2250.f*Width; // 1140.f
WidthNear = 1840.f*Width; // 540.f
}
else
{
CameraViewFar = 3300.f;// * 0.1f;
CameraViewNear = CameraViewFar*0.19f;//0.22
CameraViewTarget = CameraViewFar*0.47f;//0.47
WidthFar = 1300.f*Width; // 1140.f
WidthNear = 1880.f*Width; // 540.f
}
Muy buen aporte louis ! Yo hice exactamente lo mismo pero lo mantuve en VS2010 en lugar de upgradearlo a vs2019.Hi, brother, how did you run in VS2010?
Esperemos que alguien haga algo interesante con esto porque con la base liberada aún no hicieron nada interesante así que espero que el trabajo no sea en vano.
Compartan la source 2010 para los quetienen ordenadores de menos recursos
Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
BRO can you share the VS2010 resources?Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
BRO can you share the VS2010 resources?Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
BRO can you share the VS2010 resources?Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
the louis version is not supported, I modified everything to work with the vs2019 libraries.
BRO can you share the VS2010 resources?Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
the louis version is not supported, I modified everything to work with the vs2019 libraries.
@Odisk me aparece algo de "afxres.h" no encontrado, sabes como puedo solucionarlo? llorando2
Thank youBRO can you share the VS2010 resources?Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
the louis version is not supported, I modified everything to work with the vs2019 libraries.
BRO can you share the VS2010 resources?Compartan la source 2010 para los quetienen ordenadores de menos recursos
yo la tengo para el 2010 pero la pase para el 2019
pero tampoco es tan dificil cambiar al 2010 solo deben cambiar ciertas funciones y librerias, aunque creo que la de louis tiene muchas funciones a base del 2019 ya que tiene mucho codigo de nueva librerias, es como volver al al codigo antiguo.
the louis version is not supported, I modified everything to work with the vs2019 libraries.
@Odisk me aparece algo de "afxres.h" no encontrado, sabes como puedo solucionarlo? llorando2
Anyone Fixed Ancient Items Bug ?name item bug ??
Anyone Fixed Ancient Items Bug ?name item bug ??
Setoption not fix , name item fixAnyone Fixed Ancient Items Bug ?name item bug ??
when wear full set no active set options colored from grey to blue also the option in the top not appear with gold
(https://i.ibb.co/WvPBV6d/Screen-11-23-16-55-0007.jpg)
magia2 MU helper indev . not webzen
typedef struct
{
char Name[32];
BYTE Level;
WORD Damage;
WORD Mana;
WORD AbilityGuage;
BYTE Distance;
int Delay;
int Energy;
WORD Charisma;
BYTE MasteryType;
BYTE SkillUseType;
BYTE SkillBrand;
BYTE KillCount;
BYTE RequireDutyClass[6]; //MAX_DUTY_CLASS = 6
BYTE RequireClass[7]; //MAX_CLASS = 7
BYTE Magic_Icon;
BYTE unknow1[2];
BYTE TypeSkill;
BYTE unknow2[11];
BYTE Strength;
BYTE Dexterity;
} SKILL_ATTRIBUTE;
#ifdef PBG_ADD_NEWCHAR_MONK
#define PBG_ADD_NEWCHAR_MONK_SKILL
#define PBG_ADD_NEWCHAR_MONK_ITEM
#define PBG_ADD_NEWCHAR_MONK_ANI
#define PBG_MOD_NEWCHAR_MONK_WING_2
#define PBG_MOD_RAGEFIGHTERSOUND
#endif
Test SKILL_ATTRIBUTE struct to use skill.bmd from client ss6.3 (support RF)Code: [Select]typedef struct
{
char Name[32];
BYTE Level;
WORD Damage;
WORD Mana;
WORD AbilityGuage;
BYTE Distance;
int Delay;
int Energy;
WORD Charisma;
BYTE MasteryType;
BYTE SkillUseType;
BYTE SkillBrand;
BYTE KillCount;
BYTE RequireDutyClass[6]; //MAX_DUTY_CLASS = 6
BYTE RequireClass[7]; //MAX_CLASS = 7
BYTE Magic_Icon;
BYTE unknow1[2];
BYTE TypeSkill;
BYTE unknow2[11];
BYTE Strength;
BYTE Dexterity;
} SKILL_ATTRIBUTE;
change define MAX_SKILLS to 650
(https://anhvl.com/image/Untitled.8scNT)
Wish someone who have source ss6 will share real struct :")
To enable RF, add to Defined_Global.hCode: [Select]#ifdef PBG_ADD_NEWCHAR_MONK
#define PBG_ADD_NEWCHAR_MONK_SKILL
#define PBG_ADD_NEWCHAR_MONK_ITEM
#define PBG_ADD_NEWCHAR_MONK_ANI
#define PBG_MOD_NEWCHAR_MONK_WING_2
#define PBG_MOD_RAGEFIGHTERSOUND
#endif
Client+Server+Sources
password unzip: tuservermu.com.veCitar
UPDATE:
Source Main 5.2 (VS2022) + NvAPI + Intel Support
-Compatibilidade com windows 7~10 via código.
-Compatibilidade com GPU AMD/NVIDIA.
-Compatibilidade com processadores AMD/INTEL mais recentes.
- Suporte para Nvidia/AMD/Intel.
Modificados:
WinMain.cpp
Adicionados:
nvapi.h
NvApiDriverSettings.hModificados:- Suporte para processadores Intel mais recentes e melhorias no suporte de sistema operacional.
sysinfo.cpp
sysinfo.h
Adicionados:
intrinsics.h
platform.h
constants.h
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ZzzOpenglUtil.h"
#include "ZzzTexture.h"
#include "ZzzBMD.h"
#include "ZzzInfomation.h"
#include "zzzObject.h"
#include "zzzcharacter.h"
#include "Zzzinfomation.h"
#include "NewUISystem.h"
int OpenglWindowX;
int OpenglWindowY;
int OpenglWindowWidth;
int OpenglWindowHeight;
bool CameraTopViewEnable = false;
float CameraViewNear = 20.f;
float CameraViewFar = 2000.f;
float CameraFOV = 55.f;
vec3_t CameraPosition;
vec3_t CameraAngle;
float CameraMatrix[3][4];
vec3_t MousePosition;
vec3_t MouseTarget;
float g_fCameraCustomDistance = 0.f;
bool FogEnable = false;
GLfloat FogDensity = 0.0004f;
GLfloat FogColor[4] = {30/256.f,20/256.f,10/256.f,};
unsigned int WindowWidth = 1024;
unsigned int WindowHeight = 768;
int MouseX = WindowWidth/2;
int MouseY = WindowHeight/2;
int BackMouseX = MouseX;
int BackMouseY = MouseY;
bool MouseLButton;
bool MouseLButtonPop;
bool MouseLButtonPush;
bool MouseRButton;
bool MouseRButtonPop;
bool MouseRButtonPush;
bool MouseLButtonDBClick;
bool MouseMButton;
bool MouseMButtonPop;
bool MouseMButtonPush;
int MouseWheel;
DWORD MouseRButtonPress = 0;
//bool showShoppingMall = false;
// ShellExecute updated
void OpenExploper(char* Name, char* para)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcess(Name, para, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
// Erro
printf("CreateProcess failed (%d).\n", GetLastError());
return;
}
// Esperar pelo processo
WaitForSingleObject(pi.hProcess, INFINITE);
// Liberar recursos
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
bool CheckID_HistoryDay(char* Name, WORD day) {
struct dayHistory {
char ID[MAX_ID_SIZE + 1];
WORD date;
};
FILE* fp;
dayHistory days[100];
WORD num = 0;
bool sameName = false;
bool update = true;
if ((fp = fopen("dconfig.ini", "rb")) != NULL) {
fread(&num, sizeof(WORD), 1, fp);
if (num > 100) {
num = 0;
}
else {
for (int i = 0; i < num; ++i) {
fread(days[i].ID, sizeof(char), MAX_ID_SIZE + 1, fp);
fread(&days[i].date, sizeof(WORD), 1, fp);
if (!strcmp(days[i].ID, Name)) {
sameName = true;
if (days[i].date == day) {
update = false;
break;
}
days[i].date = day;
}
}
}
fclose(fp);
}
if (update) {
if (!sameName) {
memcpy(days[num].ID, Name, (MAX_ID_SIZE + 1) * sizeof(char));
days[num].date = day;
num++;
}
fp = fopen("dconfig.ini", "wb");
fwrite(&num, sizeof(WORD), 1, fp);
for (int i = 0; i < num; ++i) {
fwrite(days[i].ID, sizeof(char), MAX_ID_SIZE + 1, fp);
fwrite(&days[i].date, sizeof(WORD), 1, fp);
}
fclose(fp);
}
// showShoppingMall = update;
return update;
}
bool GrabEnable = false;
char GrabFileName[MAX_PATH];
int GrabScreen = 0;
bool GrabFirst = false;
void SaveScreen()
{
// Flag para controlar se é a primeira vez que esta função é chamada
static bool GrabFirst = true;
// Cria um buffer para armazenar os pixels
unsigned char* Buffer = new unsigned char[(int)WindowWidth * (int)WindowHeight * 3];
// Copia os pixel da janela para o buffer
glReadPixels(0, 0, (int)WindowWidth, (int)WindowHeight, GL_RGB, GL_UNSIGNED_BYTE, Buffer);
// Escreve a imagem no disco
WriteJpeg(GrabFileName, (int)WindowWidth, (int)WindowHeight, Buffer, 100);
// Libera o buffer
SAFE_DELETE_ARRAY(Buffer);
// Incrementa o contador e aplica módulo
GrabScreen = (GrabScreen + 1) % 10000;
}
float PerspectiveX;
float PerspectiveY;
int ScreenCenterX;
int ScreenCenterY;
int ScreenCenterYFlip;
void GetOpenGLMatrix(float Matrix[3][4])
{
float OpenGLMatrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX,OpenGLMatrix);
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
Matrix[i][j] = OpenGLMatrix[j*4+i];
}
}
}
void gluPerspective2(float Fov,float Aspect,float ZNear,float ZFar)
{
gluPerspective(Fov,Aspect,ZNear,ZFar);
ScreenCenterX = OpenglWindowX + OpenglWindowWidth/2;
ScreenCenterY = OpenglWindowY + OpenglWindowHeight/2;
ScreenCenterYFlip = WindowWidth - ScreenCenterY;
float AspectY = (float)(WindowHeight)/(float)(OpenglWindowHeight);
PerspectiveX = tanf(Fov*0.5f*3.141592f/180.f)/(float)(OpenglWindowWidth /2)*Aspect;
PerspectiveY = tanf(Fov*0.5f*3.141592f/180.f)/(float)(OpenglWindowHeight/2)*AspectY;
}
void CreateScreenVector ( int sx, int sy, vec3_t Target, bool bFixView )
{
sx = sx*WindowWidth/640;
sy = sy*WindowHeight/480;
vec3_t p1,p2;
if ( bFixView )
{
p1[0] = (float)(sx-ScreenCenterX) * CameraViewFar * PerspectiveX;
p1[1] = -(float)(sy-ScreenCenterY) * CameraViewFar * PerspectiveY;
p1[2] = -CameraViewFar;
}
else
{
p1[0] = (float)(sx-ScreenCenterX) * RENDER_ITEMVIEW_FAR * PerspectiveX;
p1[1] = -(float)(sy-ScreenCenterY) * RENDER_ITEMVIEW_FAR * PerspectiveY;
p1[2] = -RENDER_ITEMVIEW_FAR;
}
p2[0] = -CameraMatrix[0][3];
p2[1] = -CameraMatrix[1][3];
p2[2] = -CameraMatrix[2][3];
VectorIRotate(p2,CameraMatrix,MousePosition);
VectorIRotate(p1,CameraMatrix,p2);
VectorAdd(MousePosition,p2,Target);
}
void Projection(vec3_t Position, int* sx, int* sy)
{
vec3_t TrasformPosition;
VectorTransform(Position, CameraMatrix, TrasformPosition);
float ratioX = 640.0f / WindowWidth;
float ratioY = 480.0f / WindowHeight;
float PerspectiveX = PerspectiveY * ratioX;
*sx = -(int)(TrasformPosition[0] / PerspectiveX / TrasformPosition[2]) + ScreenCenterX;
*sy = (int)(TrasformPosition[1] / PerspectiveX / TrasformPosition[2]) + ScreenCenterY;
*sx = (int)(*sx * ratioX);
*sy = (int)(*sy * ratioY);
}
void TransformPosition(vec3_t Position, vec3_t WorldPosition, int* x, int* y)
{
vec3_t Temp;
VectorSubtract(Position, CameraPosition, Temp);
VectorRotate(Temp, CameraMatrix, WorldPosition);
float perspectiveX = 1.0f / PerspectiveX;
float perspectiveY = 1.0f / PerspectiveY;
*x = (int)(WorldPosition[0] * perspectiveX / -WorldPosition[2] + ScreenCenterX);
*y = (int)(WorldPosition[1] * perspectiveY / -WorldPosition[2] + ScreenCenterYFlip);
}
bool TestDepthBuffer(vec3_t Position)
{
vec3_t WorldPosition;
int x, y;
TransformPosition(Position, WorldPosition, &x, &y);
// removido o if para melhorar a fluidez
x = (x < OpenglWindowX) ? OpenglWindowX : x;
y = (y < OpenglWindowY) ? OpenglWindowY : y;
x = (x >= (int)OpenglWindowX + OpenglWindowWidth) ? (int)OpenglWindowX + OpenglWindowWidth : x;
y = (y >= (int)OpenglWindowY + OpenglWindowHeight) ? (int)OpenglWindowY + OpenglWindowHeight : y;
GLfloat key[3];
glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, key);
float z = 1.f - CameraViewNear / -WorldPosition[2] + CameraViewNear / CameraViewFar;
if (key[0] >= z) return true;
return false;
}
///////////////////////////////////////////////////////////////////////////////
// Render Util
///////////////////////////////////////////////////////////////////////////////
int CachTexture = -1;
bool TextureEnable = false;
bool DepthTestEnable = false;
bool CullFaceEnable = false;
bool DepthMaskEnable = false;
bool AlphaTestEnable = false;
int AlphaBlendType = 0;
// Texture Stream
void BindTexture(int tex)
{
if (CachTexture == tex) return;
CachTexture = tex;
if (tex >= 0) {
BITMAP_t* b = &Bitmaps[tex];
glBindTexture(GL_TEXTURE_2D, b->TextureNumber);
}
else {
glBindTexture(GL_TEXTURE_2D, -1 * tex);
}
}
bool TextureStream = false;
extern int test;
int CachedTexture = -1;
void BindTextureStream(int tex)
{
if (CachedTexture == tex) return;
CachedTexture = tex;
if (TextureStream)
glEnd();
BITMAP_t* b = &Bitmaps[tex];
glBindTexture(GL_TEXTURE_2D, b->TextureNumber);
glBegin(GL_TRIANGLES);
TextureStream = true;
}
void EndTextureStream()
{
if (TextureStream)
{
glEnd();
TextureStream = false;
}
}
void EnableDepthTest()
{
if (!DepthTestEnable)
{
glEnable(GL_DEPTH_TEST);
DepthTestEnable = true;
}
}
void DisableDepthTest()
{
if (DepthTestEnable)
{
glDisable(GL_DEPTH_TEST);
DepthTestEnable = false;
}
}
//Depth Mask
void EnableDepthMask()
{
GLboolean currentState;
glGetBooleanv(GL_DEPTH_WRITEMASK, ¤tState);
if (!currentState)
{
glDepthMask(true);
}
}
void DisableDepthMask()
{
glDepthMask(false);
}
void EnableCullFace()
{
glEnable(GL_CULL_FACE);
CullFaceEnable = true;
}
void DisableCullFace()
{
if (CullFaceEnable)
{
CullFaceEnable = false;
glDisable(GL_CULL_FACE);
}
}
void DisableTexture(bool AlphaTest)
{
EnableDepthMask();
if (AlphaTest)
{
AlphaTestEnable = true;
glEnable(GL_ALPHA_TEST);
}
else
{
AlphaTestEnable = false;
glDisable(GL_ALPHA_TEST);
}
TextureEnable = false;
glDisable(GL_TEXTURE_2D);
}
void DisableAlphaBlend()
{
int blendState = AlphaBlendType != 0;
int alphaTestState = AlphaTestEnable;
int textureState = !TextureEnable;
int fogState = FogEnable;
AlphaBlendType = 0;
AlphaTestEnable = false;
TextureEnable = true;
FogEnable = false;
glDisable(GL_BLEND);
if (alphaTestState)
glDisable(GL_ALPHA_TEST);
if (textureState)
glEnable(GL_TEXTURE_2D);
if (fogState)
glEnable(GL_FOG);
EnableCullFace();
EnableDepthMask();
}
void EnableAlphaTest(bool DepthMask)
{
AlphaBlendType = 2;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
DisableCullFace();
if (DepthMask) EnableDepthMask();
AlphaTestEnable = true;
glEnable(GL_ALPHA_TEST);
TextureEnable = true;
glEnable(GL_TEXTURE_2D);
if (FogEnable) glEnable(GL_FOG);
}
void EnableAlphaBlend()
{
AlphaBlendType = 3;
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);
DisableCullFace();
DisableDepthMask();
glDisable(GL_ALPHA_TEST);
glEnable(GL_TEXTURE_2D);
glDisable(GL_FOG);
}
void EnableAlphaBlendMinus()
{
GLboolean blendEnabled = glIsEnabled(GL_BLEND);
GLboolean alphaTestEnabled = glIsEnabled(GL_ALPHA_TEST);
GLboolean textureEnabled = glIsEnabled(GL_TEXTURE_2D);
GLboolean fogEnabled = glIsEnabled(GL_FOG);
if (AlphaBlendType != 4)
{
AlphaBlendType = 4;
glEnable(GL_BLEND);
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
}
DisableCullFace();
DisableDepthMask();
if (alphaTestEnabled)
{
AlphaTestEnable = false;
glDisable(GL_ALPHA_TEST);
}
if (!textureEnabled)
{
TextureEnable = true;
glEnable(GL_TEXTURE_2D);
}
if (fogEnabled)
glEnable(GL_FOG);
}
void EnableAlphaBlend2()
{
if (AlphaBlendType != 5)
{
AlphaBlendType = 5;
glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_ONE);
}
//Evitando execução desnecessária de funções
if (AlphaTestEnable || CullFaceEnable || DepthMaskEnable || !TextureEnable || FogEnable)
{
DisableCullFace();
DisableDepthMask();
if (AlphaTestEnable)
glDisable(GL_ALPHA_TEST);
if (!TextureEnable)
glEnable(GL_TEXTURE_2D);
if (FogEnable)
glEnable(GL_FOG);
}
}
void EnableAlphaBlend3()
{
if(AlphaBlendType != 6)
{
AlphaBlendType = 6;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
}
DisableCullFace();
DisableDepthMask();
if(AlphaTestEnable)
{
AlphaTestEnable = false;
glDisable(GL_ALPHA_TEST);
}
if(!TextureEnable)
{
TextureEnable = true;
glEnable(GL_TEXTURE_2D);
}
if(FogEnable)
glEnable(GL_FOG);
}
void EnableAlphaBlend4()
{
if(AlphaBlendType != 7)
{
AlphaBlendType = 7;
glEnable(GL_BLEND);
glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_COLOR);
}
DisableCullFace();
DisableDepthMask();
if(AlphaTestEnable)
{
AlphaTestEnable = false;
glDisable(GL_ALPHA_TEST);
}
if(!TextureEnable)
{
TextureEnable = true;
glEnable(GL_TEXTURE_2D);
}
if(FogEnable)
glEnable(GL_FOG);
}
void EnableLightMap()
{
if(AlphaBlendType != 1)
{
AlphaBlendType = 1;
glEnable(GL_BLEND);
glBlendFunc(GL_ZERO,GL_SRC_COLOR);
}
EnableCullFace();
EnableDepthMask();
if(AlphaTestEnable)
{
AlphaTestEnable = false;
glDisable(GL_ALPHA_TEST);
}
if(!TextureEnable)
{
TextureEnable = true;
glEnable(GL_TEXTURE_2D);
}
if(FogEnable)
glEnable(GL_FOG);
}
void glViewport2(int x,int y,int Width,int Height)
{
OpenglWindowX = x;
OpenglWindowY = y;
OpenglWindowWidth = Width;
OpenglWindowHeight = Height;
glViewport(x,WindowHeight-(y+Height),Width,Height);
}
float ConvertX(float x)
{
return x*(float)WindowWidth/640.f;
}
float ConvertY(float y)
{
return y*(float)WindowHeight/480.f;
}
void BeginOpengl(int x,int y,int Width,int Height )
{
x = x*WindowWidth/640;
y = y*WindowHeight/480;
Width = Width*WindowWidth/640;
Height = Height*WindowHeight/480;
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glViewport2(x,y,Width,Height);
gluPerspective2(CameraFOV,(float)Width/(float)Height,CameraViewNear,CameraViewFar*1.4f);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRotatef(CameraAngle[1],0.f,1.f,0.f);
if(CameraTopViewEnable == false)
glRotatef(CameraAngle[0],1.f,0.f,0.f);
glRotatef(CameraAngle[2],0.f,0.f,1.f);
glTranslatef(-CameraPosition[0],-CameraPosition[1],-CameraPosition[2]);
glDisable(GL_ALPHA_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glDepthMask(true);
AlphaTestEnable = false;
TextureEnable = true;
DepthTestEnable = true;
CullFaceEnable = true;
DepthMaskEnable = true;
glDepthFunc(GL_LEQUAL);
glAlphaFunc(GL_GREATER,0.25f);
if(FogEnable)
{
glEnable(GL_FOG);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogf(GL_FOG_DENSITY, FogDensity);
glFogfv(GL_FOG_COLOR, FogColor);
}
else
{
glDisable(GL_FOG);
}
GetOpenGLMatrix(CameraMatrix);
}
void EndOpengl()
{
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
}
void UpdateMousePositionn()
{
vec3_t vPos;
glLoadIdentity();
glTranslatef(-CameraPosition[0],-CameraPosition[1],-CameraPosition[2]);
GetOpenGLMatrix(CameraMatrix);
Vector(-CameraMatrix[0][3], -CameraMatrix[1][3], -CameraMatrix[2][3], vPos);
VectorIRotate(vPos, CameraMatrix, MousePosition);
}
#ifdef LDS_ADD_MULTISAMPLEANTIALIASING
BOOL IsGLExtensionSupported(const char *extension)
{
const size_t extlen = strlen(extension);
const char *supported = NULL;
// Try To Use wglGetExtensionStringARB On Current DC, If Possible
PROC wglGetExtString = wglGetProcAddress("wglGetExtensionsStringARB");
if (wglGetExtString)
supported = ((char*(__stdcall*)(HDC))wglGetExtString)(wglGetCurrentDC());
// If That Failed, Try Standard Opengl Extensions String
if (supported == NULL)
supported = (char*)glGetString(GL_EXTENSIONS);
// If That Failed Too, Must Be No Extensions Supported
if (supported == NULL)
return FALSE;
// Begin Examination At Start Of String, Increment By 1 On False Match
for (const char* p = supported; ; p++)
{
// Advance p Up To The Next Possible Match
p = strstr(p, extension);
if (p == NULL)
return FALSE; // No Match
if ((p==supported || p[-1]==' ') && (p[extlen]=='\0' || p[extlen]==' '))
return TRUE; // Match
}
}
BOOL InitGLMultisample(HINSTANCE hInstance,HWND hWnd,PIXELFORMATDESCRIPTOR pfd, int iRequestMSAAValue,int& OutiPixelFormat )
{
BOOL bIsGLMultisampleSupported = FALSE;
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// See If The String Exists In WGL!
if (!IsGLExtensionSupported("WGL_ARB_multisample"))
{
bIsGLMultisampleSupported=FALSE;
return FALSE;
}
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// Get Our Pixel Format
PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)wglGetProcAddress("wglChoosePixelFormatARB");
if (!wglChoosePixelFormatARB)
{
bIsGLMultisampleSupported=FALSE;
return FALSE;
}
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// Get Our Current Device Context
HDC hDC = GetDC(hWnd);
int valid;
UINT numFormats;
float fAttributes[] = {0,0};
// These Attributes Are The Bits We Want To Test For In Our Sample
// Everything Is Pretty Standard, The Only One We Want To
// Really Focus On Is The SAMPLE BUFFERS ARB And WGL SAMPLES
// These Two Are Going To Do The Main Testing For Whether Or Not
// We Support Multisampling On This Hardware.
int iAttributes[] =
{
WGL_DRAW_TO_WINDOW_ARB,GL_TRUE,
WGL_SUPPORT_OPENGL_ARB,GL_TRUE,
WGL_ACCELERATION_ARB,WGL_FULL_ACCELERATION_ARB,
WGL_COLOR_BITS_ARB,24,
WGL_ALPHA_BITS_ARB,8,
WGL_DEPTH_BITS_ARB,16,
WGL_STENCIL_BITS_ARB,0,
WGL_DOUBLE_BUFFER_ARB,GL_TRUE,
WGL_SAMPLE_BUFFERS_ARB,GL_TRUE,
WGL_SAMPLES_ARB, iRequestMSAAValue, // xN MultiSampling (N=4,2,1)
0,0
};
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// First We Check To See If We Can Get A Pixel Format For 4 Samples
valid = wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&OutiPixelFormat,&numFormats);
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// If We Returned True, And Our Format Count Is Greater Than 1
if (valid && numFormats >= 1)
{
bIsGLMultisampleSupported = TRUE;
return bIsGLMultisampleSupported;
}
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// Our Pixel Format With 4 Samples Failed, Test For 2 Samples
iAttributes[19] = 2;
valid = wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&OutiPixelFormat,&numFormats);
if (valid && numFormats >= 1)
{
bIsGLMultisampleSupported = TRUE;
return bIsGLMultisampleSupported;
}
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
// Return The Valid Format
return bIsGLMultisampleSupported;
}
void SetEnableMultisample()
{
if( TRUE == g_bSupportedMSAA )
{
glEnable(GL_MULTISAMPLE_ARB); // Enable Multisampling
}
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
}
void SetDisableMultisample()
{
if( TRUE == g_bSupportedMSAA )
{
glDisable(GL_MULTISAMPLE_ARB); // Enable Multisampling
}
#if defined(_DEBUG)
CheckGLError( __FILE__, __LINE__ );
#endif // defined(_DEBUG)
}
#endif // LDS_ADD_MULTISAMPLEANTIALIASING
///////////////////////////////////////////////////////////////////////////////
// render util
///////////////////////////////////////////////////////////////////////////////
inline void TEXCOORD(float *c,float u,float v)
{
c[0] = u;
c[1] = v;
}
void RenderBox(float Matrix[3][4])
{
vec3_t BoundingBoxMin;
vec3_t BoundingBoxMax;
Vector(-10.f,-30.f,-10.f,BoundingBoxMin);
Vector(10.f,0.f,10.f,BoundingBoxMax);
vec3_t BoundingVertices[8];
Vector(BoundingBoxMax[0],BoundingBoxMax[1],BoundingBoxMax[2],BoundingVertices[0]);
Vector(BoundingBoxMax[0],BoundingBoxMax[1],BoundingBoxMin[2],BoundingVertices[1]);
Vector(BoundingBoxMax[0],BoundingBoxMin[1],BoundingBoxMax[2],BoundingVertices[2]);
Vector(BoundingBoxMax[0],BoundingBoxMin[1],BoundingBoxMin[2],BoundingVertices[3]);
Vector(BoundingBoxMin[0],BoundingBoxMax[1],BoundingBoxMax[2],BoundingVertices[4]);
Vector(BoundingBoxMin[0],BoundingBoxMax[1],BoundingBoxMin[2],BoundingVertices[5]);
Vector(BoundingBoxMin[0],BoundingBoxMin[1],BoundingBoxMax[2],BoundingVertices[6]);
Vector(BoundingBoxMin[0],BoundingBoxMin[1],BoundingBoxMin[2],BoundingVertices[7]);
vec3_t TransformVertices[8];
for(int j=0;j<8;j++)
{
VectorTransform(BoundingVertices[j],Matrix,TransformVertices[j]);
}
glBegin(GL_QUADS);
//glBegin(GL_LINES);
glColor3f(0.2f,0.2f,0.2f);
glTexCoord2f( 1.0F, 1.0F); glVertex3fv(TransformVertices[7]);
glTexCoord2f( 1.0F, 0.0F); glVertex3fv(TransformVertices[6]);
glTexCoord2f( 0.0F, 0.0F); glVertex3fv(TransformVertices[4]);
glTexCoord2f( 0.0F, 1.0F); glVertex3fv(TransformVertices[5]);
glColor3f(0.2f,0.2f,0.2f);
glTexCoord2f( 0.0F, 1.0F); glVertex3fv(TransformVertices[0]);
glTexCoord2f( 1.0F, 1.0F); glVertex3fv(TransformVertices[2]);
glTexCoord2f( 1.0F, 0.0F); glVertex3fv(TransformVertices[3]);
glTexCoord2f( 0.0F, 0.0F); glVertex3fv(TransformVertices[1]);
glColor3f(0.6f,0.6f,0.6f);
glTexCoord2f( 1.0F, 1.0F); glVertex3fv(TransformVertices[7]);
glTexCoord2f( 1.0F, 0.0F); glVertex3fv(TransformVertices[3]);
glTexCoord2f( 0.0F, 0.0F); glVertex3fv(TransformVertices[2]);
glTexCoord2f( 0.0F, 1.0F); glVertex3fv(TransformVertices[6]);
glColor3f(0.6f,0.6f,0.6f);
glTexCoord2f( 0.0F, 1.0F); glVertex3fv(TransformVertices[0]);
glTexCoord2f( 1.0F, 1.0F); glVertex3fv(TransformVertices[1]);
glTexCoord2f( 1.0F, 0.0F); glVertex3fv(TransformVertices[5]);
glTexCoord2f( 0.0F, 0.0F); glVertex3fv(TransformVertices[4]);
glColor3f(0.4f,0.4f,0.4f);
glTexCoord2f( 1.0F, 1.0F); glVertex3fv(TransformVertices[7]);
glTexCoord2f( 1.0F, 0.0F); glVertex3fv(TransformVertices[5]);
glTexCoord2f( 0.0F, 0.0F); glVertex3fv(TransformVertices[1]);
glTexCoord2f( 0.0F, 1.0F); glVertex3fv(TransformVertices[3]);
glColor3f(0.4f,0.4f,0.4f);
glTexCoord2f( 0.0F, 1.0F); glVertex3fv(TransformVertices[0]);
glTexCoord2f( 1.0F, 1.0F); glVertex3fv(TransformVertices[4]);
glTexCoord2f( 1.0F, 0.0F); glVertex3fv(TransformVertices[6]);
glTexCoord2f( 0.0F, 0.0F); glVertex3fv(TransformVertices[2]);
glEnd();
}
void RenderPlane3D(float Width,float Height,float Matrix[3][4])
{
vec3_t BoundingVertices[4];
Vector(-Width,-Width, Height,BoundingVertices[3]);
Vector( Width, Width, Height,BoundingVertices[2]);
Vector( Width, Width,-Height,BoundingVertices[1]);
Vector(-Width,-Width,-Height,BoundingVertices[0]);
vec3_t TransformVertices[4];
for(int j=0;j<4;j++)
{
VectorTransform(BoundingVertices[j],Matrix,TransformVertices[j]);
}
glBegin(GL_QUADS);
glTexCoord2f( 0.f, 1.f); glVertex3fv(TransformVertices[0]);
glTexCoord2f( 1.f, 1.f); glVertex3fv(TransformVertices[1]);
glTexCoord2f( 1.f, 0.f); glVertex3fv(TransformVertices[2]);
glTexCoord2f( 0.f, 0.f); glVertex3fv(TransformVertices[3]);
glEnd();
}
void BeginSprite()
{
glPushMatrix();
glLoadIdentity();
}
void EndSprite()
{
glPopMatrix();
}
void RenderSprite(int Texture,vec3_t Position,float Width,float Height,vec3_t Light,float Rotation,float u,float v,float uWidth,float vHeight)
{
BindTexture(Texture);
vec3_t p2;
VectorTransform(Position,CameraMatrix,p2);
//VectorCopy(Position,p2);
float x = p2[0];
float y = p2[1];
float z = p2[2];
Width *= 0.5f;
Height *= 0.5f;
vec3_t p[4];
if(Rotation==0)
{
Vector(x-Width, y-Height, z, p[0]);
Vector(x+Width, y-Height, z, p[1]);
Vector(x+Width, y+Height, z, p[2]);
Vector(x-Width, y+Height, z, p[3]);
}
else
{
vec3_t p2[4];
Vector(-Width,-Height, z, p2[0]);
Vector( Width,-Height, z, p2[1]);
Vector( Width, Height, z, p2[2]);
Vector(-Width, Height, z, p2[3]);
vec3_t Angle;
Vector(0.f,0.f,Rotation,Angle);
float Matrix[3][4];
AngleMatrix(Angle,Matrix);
for(int i=0;i<4;i++)
{
VectorRotate(p2[i],Matrix,p[i]);
p[i][0] += x;
p[i][1] += y;
}
}
float c[4][2];
TEXCOORD(c[3],u ,v );
TEXCOORD(c[2],u+uWidth,v );
TEXCOORD(c[1],u+uWidth,v+vHeight);
TEXCOORD(c[0],u ,v+vHeight);
glBegin(GL_QUADS);
if(Bitmaps[Texture].Components==3)
glColor3fv(Light);
else
{
if(Texture == BITMAP_BLOOD+1 || Texture == BITMAP_FONT_HIT)
glColor4f(Light[0],Light[1],Light[2],1.f);
else
glColor4f(Light[0],Light[1],Light[2],Light[0]);
}
for(int i=0;i<4;i++)
{
glTexCoord2f(c[i][0],c[i][1]);
glVertex3fv(p[i]);
}
glEnd();
}
void RenderSpriteUV(int Texture,vec3_t Position,float Width,float Height,float (*UV)[2],vec3_t Light[4],float Alpha)
{
BindTexture(Texture);
vec3_t p2;
VectorTransform(Position,CameraMatrix,p2);
float x = p2[0];
float y = p2[1];
float z = p2[2];
Width *= 0.5f;
Height *= 0.5f;
vec3_t p[4];
Vector(x-Width, y-Height, z, p[0]);
Vector(x+Width, y-Height, z, p[1]);
Vector(x+Width, y+Height, z, p[2]);
Vector(x-Width, y+Height, z, p[3]);
glBegin(GL_QUADS);
for(int i=0;i<4;i++)
{
glColor4f(Light[i][0],Light[i][1],Light[i][2],Alpha);
glTexCoord2f(UV[i][0],UV[i][1]);
glVertex3fv(p[i]);
}
glEnd();
}
void RenderNumber(vec3_t Position,int Num,vec3_t Color,float Alpha,float Scale)
{
vec3_t p;
VectorCopy(Position,p);
vec3_t Light[4];
VectorCopy(Color,Light[0]);
VectorCopy(Color,Light[1]);
VectorCopy(Color,Light[2]);
VectorCopy(Color,Light[3]);
if(Num == -1)
{
float UV[4][2];
TEXCOORD(UV[0],0.f ,32.f/32.f);
TEXCOORD(UV[1],32.f/256.f,32.f/32.f);
TEXCOORD(UV[2],32.f/256.f,17.f/32.f);
TEXCOORD(UV[3],0.f ,17.f/32.f);
RenderSpriteUV(BITMAP_FONT+1,p,45,20,UV,Light,Alpha);
}
else if(Num == -2)
{
RenderSprite(BITMAP_FONT_HIT,p,32*Scale,20*Scale, Light[0], 0.f, 0.f, 0.f, 27.f/32.f, 15.f/16.f);
}
else
{
char Text[32];
itoa(Num,Text,10);
p[0] -= strlen(Text)*5.f;
unsigned int Length = strlen(Text);
p[0] -= Length*Scale*0.125f;
p[1] -= Length*Scale*0.125f;
for(unsigned int i=0;i<Length;i++)
{
float UV[4][2];
float u = (float)(Text[i]-48)*16.f/256.f;
TEXCOORD(UV[0],u ,16.f/32.f);
TEXCOORD(UV[1],u+16.f/256.f,16.f/32.f);
TEXCOORD(UV[2],u+16.f/256.f,0.f);
TEXCOORD(UV[3],u ,0.f);
RenderSpriteUV(BITMAP_FONT+1,p,Scale,Scale,UV,Light,Alpha);
p[0] += Scale*0.5f;
p[1] += Scale*0.5f;
}
}
}
float RenderNumber2D(float x,float y,int Num,float Width,float Height)
{
char Text[32];
itoa(Num,Text,10);
int Length = (int)strlen(Text);
x -= Width*Length/2;
for(int i=0;i<Length;i++)
{
float u = (float)(Text[i]-48)*16.f/256.f;
//glColor3fv(Color);
RenderBitmap(BITMAP_FONT+1,x,y,Width,Height,u,0.f,16.f/256.f,16.f/32.f);
x += Width*0.7f;
}
return x;
}
void BeginBitmap()
{
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glViewport(0,0,WindowWidth,WindowHeight);
gluPerspective(CameraFOV,(WindowWidth)/((float)WindowHeight),CameraViewNear,CameraViewFar);
glLoadIdentity();
gluOrtho2D(0,WindowWidth,0,WindowHeight);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
DisableDepthTest();
}
void EndBitmap()
{
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
}
void RenderColor(float x,float y,float Width,float Height,float Alpha,int Flag)
{
DisableTexture();
x = ConvertX(x);
y = ConvertY(y);
Width = ConvertX(Width);
Height = ConvertY(Height);
float p[4][2];
y = WindowHeight - y;
p[0][0] = x ;p[0][1] = y;
p[1][0] = x ;p[1][1] = y-Height;
p[2][0] = x+Width;p[2][1] = y-Height;
p[3][0] = x+Width;p[3][1] = y;
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
if(Alpha > 0.f)
{
if(Flag == 0)
glColor4f(1.f,1.f,1.f,Alpha);
else
if(Flag == 1)
glColor4f(0.f,0.f,0.f,Alpha);
}
glVertex2f(p[i][0],p[i][1]);
if(Alpha > 0.f)
{
glColor4f(1.f,1.f,1.f,1.f);
}
}
glEnd();
}
void EndRenderColor()
{
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glEnable(GL_TEXTURE_2D);
}
void RenderColorBitmap(int Texture,float x,float y,float Width,float Height,float u,float v,float uWidth, float vHeight, unsigned int color)
{
x = ConvertX(x);
y = ConvertY(y);
Width = ConvertX(Width);
Height = ConvertY(Height);
BindTexture(Texture);
float p[4][2];
y = WindowHeight - y;
p[0][0] = x ;p[0][1] = y;
p[1][0] = x ;p[1][1] = y-Height;
p[2][0] = x+Width;p[2][1] = y-Height;
p[3][0] = x+Width;p[3][1] = y;
float c[4][2];
TEXCOORD(c[0],u ,v );
TEXCOORD(c[3],u+uWidth,v );
TEXCOORD(c[2],u+uWidth,v+vHeight);
TEXCOORD(c[1],u ,v+vHeight);
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
glColor4ub( static_cast<GLubyte>((color&0xff)), //Rad
static_cast<GLubyte>((color>>8)&0xff), //Green
static_cast<GLubyte>((color>>16)&0xff), //Blue
static_cast<GLubyte>((color>>24)&0xff) ); //Alpha
glTexCoord2f(c[i][0],c[i][1]);
glVertex2f(p[i][0],p[i][1]);
glColor4f(1.f,1.f,1.f,1.f);
}
glEnd();
}
void RenderBitmap(int Texture,float x,float y,float Width,float Height,float u,float v,float uWidth,float vHeight,bool Scale,bool StartScale,float Alpha)
{
if(StartScale)
{
x = ConvertX(x);
y = ConvertY(y);
}
if(Scale)
{
Width = ConvertX(Width);
Height = ConvertY(Height);
}
BindTexture(Texture);
float p[4][2];
y = WindowHeight - y;
p[0][0] = x ;p[0][1] = y;
p[1][0] = x ;p[1][1] = y-Height;
p[2][0] = x+Width;p[2][1] = y-Height;
p[3][0] = x+Width;p[3][1] = y;
float c[4][2];
TEXCOORD(c[0],u ,v );
TEXCOORD(c[3],u+uWidth,v );
TEXCOORD(c[2],u+uWidth,v+vHeight);
TEXCOORD(c[1],u ,v+vHeight);
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
if(Alpha > 0.f)
{
glColor4f(1.f,1.f,1.f,Alpha);
}
glTexCoord2f(c[i][0],c[i][1]);
glVertex2f(p[i][0],p[i][1]);
if(Alpha > 0.f)
{
glColor4f(1.f,1.f,1.f,1.f);
}
}
glEnd();
}
void RenderBitmapRotate(int Texture,float x,float y,float Width,float Height,float Rotate,float u,float v,float uWidth,float vHeight)
{
x = ConvertX(x);
y = ConvertY(y);
Width = ConvertX(Width);
Height = ConvertY(Height);
//x -= Width *0.5f;
//y -= Height*0.5f;
BindTexture(Texture);
vec3_t p[4],p2[4];
y = WindowHeight - y;
Vector(-Width*0.5f, Height*0.5f,0.f,p[0]);
Vector(-Width*0.5f,-Height*0.5f,0.f,p[1]);
Vector( Width*0.5f,-Height*0.5f,0.f,p[2]);
Vector( Width*0.5f, Height*0.5f,0.f,p[3]);
vec3_t Angle;
Vector(0.f,0.f,Rotate,Angle);
float Matrix[3][4];
AngleMatrix(Angle,Matrix);
float c[4][2];
TEXCOORD(c[0],u ,v );
TEXCOORD(c[3],u+uWidth,v );
TEXCOORD(c[2],u+uWidth,v+vHeight);
TEXCOORD(c[1],u ,v+vHeight);
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
glTexCoord2f(c[i][0],c[i][1]);
VectorRotate(p[i],Matrix,p2[i]);
glVertex2f(p2[i][0]+x,p2[i][1]+y);
}
glEnd();
}
void RenderBitRotate(int Texture,float x,float y,float Width,float Height,float Rotate)
{
x = ConvertX(x);
y = ConvertY(y);
Width = ConvertX(Width);
Height = ConvertY(Height);
BindTexture(Texture);
vec3_t p[4],p2[4];
y = Height - y;
float cx = (Width/2.f) - (Width - x);
float cy = (Height/2.f) - (Height - y);
float ax = (-Width*0.5f) + cx;
float bx = (Width*0.5f) + cx;
float ay = (-Height*0.5f) + cy;
float by = (Height*0.5f) + cy;
Vector(ax, by, 0.f, p[0]);
Vector(ax, ay, 0.f, p[1]);
Vector(bx, ay, 0.f, p[2]);
Vector(bx, by, 0.f, p[3]);
vec3_t Angle;
Vector(0.f,0.f,Rotate,Angle);
float Matrix[3][4];
AngleMatrix(Angle,Matrix);
float c[4][2];
TEXCOORD(c[0],0.f,0.f);
TEXCOORD(c[3],1.f,0.f);
TEXCOORD(c[2],1.f,1.f);
TEXCOORD(c[1],0.f,1.f);
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
glTexCoord2f(c[i][0],c[i][1]);
VectorRotate(p[i],Matrix,p2[i]);
glVertex2f(p2[i][0]+(WindowWidth/2.f),p2[i][1]+(WindowHeight/2.f));
}
glEnd();
}
void RenderPointRotate(int Texture,float ix,float iy,float iWidth,float iHeight,float x,float y,float Width,float Height,float Rotate,float Rotate_Loc,float uWidth,float vHeight,int Num)
{
int i = 0;
vec3_t p,p2[4],p3,p4[4],Angle;
float c[4][2],Matrix[3][4];
ix = ConvertX(ix);
iy = ConvertY(iy);
x = ConvertX(x);
y = ConvertY(y);
Width = ConvertX(Width);
Height = ConvertY(Height);
BindTexture(Texture);
y = Height - y;
iy = Height - iy;
Vector((ix - (Width*0.5f)) + ((Width/2.f) - (Width - x)), (iy - (Height*0.5f)) + ((Height/2.f) - (Height - y)), 0.f, p);
Vector(0.f,0.f,Rotate,Angle);
AngleMatrix(Angle,Matrix);
VectorRotate(p,Matrix,p3);
Vector(-(iWidth*0.5f), (iHeight*0.5f), 0.f, p2[0]);
Vector(-(iWidth*0.5f), -(iHeight*0.5f), 0.f, p2[1]);
Vector((iWidth*0.5f), -(iHeight*0.5f), 0.f, p2[2]);
Vector((iWidth*0.5f), (iHeight*0.5f), 0.f, p2[3]);
Vector(0.f,0.f,Rotate_Loc,Angle);
AngleMatrix(Angle,Matrix);
TEXCOORD(c[0],0.f ,0.f );
TEXCOORD(c[3],uWidth,0.f );
TEXCOORD(c[2],uWidth,vHeight);
TEXCOORD(c[1],0.f ,vHeight);
glBegin(GL_TRIANGLE_FAN);
for(i=0;i<4;i++)
{
glTexCoord2f(c[i][0],c[i][1]);
Matrix[0][3] = p3[0]+25;
Matrix[1][3] = p3[1];
VectorTransform(p2[i], Matrix, p4[i]);
glVertex2f(p4[i][0]+(WindowWidth/2.f),p4[i][1]+(WindowHeight/2.f));
}
glEnd();
if(Num > -1)
{
float dx,dy;
dx = p4[0][0]+(WindowWidth/2.f);
dy = p4[0][1]+(WindowHeight/2.f);
dx = dx * (float)(640.f/WindowWidth);
dy = dy * (float)(480.f/WindowHeight);
if(Num >= 100)
{
g_pNewUIMiniMap->SetBtnPos(Num - 100,dx - (iWidth/2) , (480 - dy) - (iHeight/2), iWidth,iHeight);
}
else
{
g_pNewUIMiniMap->SetBtnPos(Num ,dx, 480 - dy, iWidth/2,iHeight/2);
}
}
}
void RenderBitmapLocalRotate(int Texture,float x,float y,float Width,float Height,float Rotate,float u,float v,float uWidth,float vHeight)
{
BindTexture(Texture);
vec3_t p[4];
x = ConvertX(x);
y = ConvertY(y);
y = WindowHeight - y;
Width = ConvertX(Width);
Height = ConvertY(Height);
vec3_t vCenter, vDir;
Vector(x, y, 0, vCenter);
Vector(Width*0.5f, -Height*0.5f, 0, vDir);
p[0][0] = vCenter[0] + (vDir[0])*cosf(Rotate);
p[0][1] = vCenter[1] + (vDir[1])*sinf(Rotate);
p[1][0] = vCenter[0] + (vDir[0])*sinf(Rotate);
p[1][1] = vCenter[1] - (vDir[1])*cosf(Rotate);
p[2][0] = vCenter[0] - (vDir[0])*cosf(Rotate);
p[2][1] = vCenter[1] - (vDir[1])*sinf(Rotate);
p[3][0] = vCenter[0] - (vDir[0])*sinf(Rotate);
p[3][1] = vCenter[1] + (vDir[1])*cosf(Rotate);
float c[4][2];
TEXCOORD(c[0],u ,v );
TEXCOORD(c[3],u+uWidth,v );
TEXCOORD(c[2],u+uWidth,v+vHeight);
TEXCOORD(c[1],u ,v+vHeight);
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
glTexCoord2f(c[i][0],c[i][1]);
glVertex2f(p[i][0],p[i][1]);
}
glEnd();
}
void RenderBitmapAlpha(int Texture,float sx,float sy,float Width,float Height)
{
EnableAlphaTest();
BindTexture(Texture);
sy = WindowHeight - sy;
for(int y=0;y<4;y++)
{
for(int x=0;x<4;x++)
{
float p[4][2];
p[0][0] = sx+((x )*Width)*0.25f; p[0][1] = sy-((y )*Height)*0.25f;
p[1][0] = sx+((x )*Width)*0.25f; p[1][1] = sy-((y+1)*Height)*0.25f;
p[2][0] = sx+((x+1)*Width)*0.25f; p[2][1] = sy-((y+1)*Height)*0.25f;
p[3][0] = sx+((x+1)*Width)*0.25f; p[3][1] = sy-((y )*Height)*0.25f;
float c[4][2];
TEXCOORD(c[0],(x )*0.25f,(y )*0.25f);
TEXCOORD(c[1],(x )*0.25f,(y+1)*0.25f);
TEXCOORD(c[2],(x+1)*0.25f,(y+1)*0.25f);
TEXCOORD(c[3],(x+1)*0.25f,(y )*0.25f);
float Alpha[4] = {1.f,1.f,1.f,1.f};
if(x==0) {Alpha[0] = 0.f;Alpha[1] = 0.f;}
if(x==3) {Alpha[2] = 0.f;Alpha[3] = 0.f;}
if(y==0) {Alpha[0] = 0.f;Alpha[3] = 0.f;}
if(y==3) {Alpha[1] = 0.f;Alpha[2] = 0.f;}
/*if(x==0&&y==0) Alpha[0] = 0.f;
if(x==0&&y==3) Alpha[1] = 0.f;
if(x==3&&y==3) Alpha[2] = 0.f;
if(x==3&&y==0) Alpha[3] = 0.f;*/
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
glColor4f(1.f,1.f,1.f,Alpha[i]);
glTexCoord2f(c[i][0],c[i][1]);
glVertex2f(p[i][0],p[i][1]);
}
glEnd();
}
}
}
void RenderBitmapUV(int Texture,float x,float y,float Width,float Height,float u,float v,float uWidth,float vHeight)
{
x = ConvertX(x);
y = ConvertY(y);
Width = ConvertX(Width);
Height = ConvertY(Height);
BindTexture(Texture);
float p[4][2];
y = WindowHeight - y;
p[0][0] = x ;p[0][1] = y;
p[1][0] = x ;p[1][1] = y-Height;
p[2][0] = x+Width;p[2][1] = y-Height;
p[3][0] = x+Width;p[3][1] = y;
float c[4][2];
TEXCOORD(c[0],u ,v +vHeight*0.25f);
TEXCOORD(c[3],u+uWidth,v );
TEXCOORD(c[2],u+uWidth,v+vHeight);
TEXCOORD(c[1],u ,v+vHeight-vHeight*0.25f);
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
glTexCoord2f(c[i][0],c[i][1]);
glVertex2f(p[i][0],p[i][1]);
}
glEnd();
}
///////////////////////////////////////////////////////////////////////////////
// collision detect util
///////////////////////////////////////////////////////////////////////////////
float absf(float a)
{
if(a < 0.f) return -a;
return a;
}
float minf(float a,float b)
{
if(a > b) return b;
return a;
}
float maxf(float a,float b)
{
if(a > b) return a;
return b;
}
int InsideTest(float x,float y,float z,int n,float *v1,float *v2,float *v3,float *v4,int flag,float type)
{
if(type > 0.f)
flag <<= 3;
int i;
vec3_t *vtx[4];
vtx[0] = (vec3_t *)v1;
vtx[1] = (vec3_t *)v2;
vtx[2] = (vec3_t *)v3;
vtx[3] = (vec3_t *)v4;
int j = n-1;
switch(flag)
{
case 1:
for(i=0;i<n;j=i,i++)
{
float d = ((*vtx[i])[1]-y) * ((*vtx[j])[2]-z) - ((*vtx[j])[1]-y) * ((*vtx[i])[2]-z);
if(d <= 0.f)
return false;
}
break;
case 2:
for(i=0;i<n;j=i,i++)
{
float d = ((*vtx[i])[2]-z) * ((*vtx[j])[0]-x) - ((*vtx[j])[2]-z) * ((*vtx[i])[0]-x);
if(d <= 0.f)
return false;
}
break;
case 4:
for(i=0;i<n;j=i,i++)
{
float d = ((*vtx[i])[0]-x) * ((*vtx[j])[1]-y) - ((*vtx[j])[0]-x) * ((*vtx[i])[1]-y);
if(d <= 0.f)
return false;
}
break;
case 8:
for(i=0;i<n;j=i,i++)
{
float d = ((*vtx[i])[1]-y) * ((*vtx[j])[2]-z) - ((*vtx[j])[1]-y) * ((*vtx[i])[2]-z);
if(d >= 0.f)
return false;
}
break;
case 16:
for(i=0;i<n;j=i,i++)
{
float d = ((*vtx[i])[2]-z) * ((*vtx[j])[0]-x) - ((*vtx[j])[2]-z) * ((*vtx[i])[0]-x);
if(d >= 0.f)
return false;
}
break;
case 32:
for(i=0;i<n;j=i,i++)
{
float d = ((*vtx[i])[0]-x) * ((*vtx[j])[1]-y) - ((*vtx[j])[0]-x) * ((*vtx[i])[1]-y);
if(d >= 0.f)
return false;
}
break;
}
return true;
}
float Distance;
void InitCollisionDetectLineToFace()
{
Distance = 9999999.f;
}
vec3_t CollisionPosition;
bool CollisionDetectLineToFace(vec3_t Position,vec3_t Target,int Polygon,float *v1,float *v2,float *v3,float *v4,vec3_t Normal,bool Collision)
{
vec3_t Direction;
VectorSubtract(Target,Position,Direction);
float a = DotProduct(Direction,Normal);
if(a >= 0.f) return false;
float b = DotProduct(Position,Normal) - DotProduct(v1,Normal);
float t = -b/a;
if(t >= 0.f && t <= Distance)
{
float X = Direction[0] * t + Position[0];
float Y = Direction[1] * t + Position[1];
float Z = Direction[2] * t + Position[2];
int Count = 0;
float MIN = minf(minf(absf(Direction[0]),absf(Direction[1])),absf(Direction[2]));
if(MIN == absf(Direction[0]))
{
if( (Y >= minf(Position[1],Target[1]) && Y <= maxf(Position[1],Target[1])) &&
(Z >= minf(Position[2],Target[2]) && Z <= maxf(Position[2],Target[2])) ) Count++;
}
else if(MIN == absf(Direction[1]))
{
if( (Z >= minf(Position[2],Target[2]) && Z <= maxf(Position[2],Target[2])) &&
(X >= minf(Position[0],Target[0]) && X <= maxf(Position[0],Target[0])) ) Count++;
}
else
{
if( (X >= minf(Position[0],Target[0]) && X <= maxf(Position[0],Target[0])) &&
(Y >= minf(Position[1],Target[1]) && Y <= maxf(Position[1],Target[1])) ) Count++;
}
if(Count == 0) return false;
Count = 0;
if(Normal[0]<=-0.5f || Normal[0]>=0.5f)
{
Count += InsideTest(X,Y,Z,Polygon,v1,v2,v3,v4,1,Normal[0]);
}
else if(Normal[1]<=-0.5f || Normal[1]>=0.5f)
{
Count += InsideTest(X,Y,Z,Polygon,v1,v2,v3,v4,2,Normal[1]);
}
else
{
Count += InsideTest(X,Y,Z,Polygon,v1,v2,v3,v4,4,Normal[2]);
}
if(Count == 0) return false;
if(Collision)
{
Distance = t;
Vector(X,Y,Z,CollisionPosition);
}
return true;
}
return false;
}
bool ProjectLineBox(vec3_t ax, vec3_t p1, vec3_t p2, OBB_t obb)
{
float P1 = DotProduct(ax, p1);
float P2 = DotProduct(ax, p2);
float mx1 = maxf(P1, P2);
float mn1 = minf(P1, P2);
float ST = DotProduct(ax, obb.StartPos);
float Q1 = DotProduct(ax, obb.XAxis);
float Q2 = DotProduct(ax, obb.YAxis);
float Q3 = DotProduct(ax, obb.ZAxis);
float mx2 = ST;
float mn2 = ST;
if (Q1>0) mx2+=Q1; else mn2+=Q1;
if (Q2>0) mx2+=Q2; else mn2+=Q2;
if (Q3>0) mx2+=Q3; else mn2+=Q3;
if (mn1 > mx2) return false;
if (mn2 > mx1) return false;
return true;
}
bool CollisionDetectLineToOBB(vec3_t p1, vec3_t p2, OBB_t obb)
{
vec3_t e1;
vec3_t eq11,eq12,eq13;
VectorSubtract(p2,p1,e1);
CrossProduct( e1, obb.XAxis, eq11);
CrossProduct( e1, obb.YAxis, eq12);
CrossProduct( e1, obb.ZAxis, eq13);
if (!ProjectLineBox(eq11,p1,p2,obb) ) return false;
if (!ProjectLineBox(eq12,p1,p2,obb) ) return false;
if (!ProjectLineBox(eq13,p1,p2,obb) ) return false;
if (!ProjectLineBox(obb.XAxis,p1,p2,obb) ) return false;
if (!ProjectLineBox(obb.YAxis,p1,p2,obb) ) return false;
if (!ProjectLineBox(obb.ZAxis,p1,p2,obb) ) return false;
return true;
}
(https://i.imgur.com/l5TlGUY.png)
maybe you did something wrong, i use webzen origin and don't get this error
(https://i.imgur.com/l5TlGUY.png)
maybe you did something wrong, i use webzen origin and don't get this error
share CSWaterTerrain.cpp
//////////////////////////////////////////////////////////////////////////
//
// CSWaterTerrain.cpp
//
//////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ZzzOpenglUtil.h"
#include "zzzInfomation.h"
#include "zzzBmd.h"
#include "zzzObject.h"
#include "zzztexture.h"
#include "zzzCharacter.h"
#include "zzzscene.h"
#include "zzzInterface.h"
#include "zzzinventory.h"
#include "zzzLodTerrain.h"
#include "CSWaterTerrain.h"
#include "GMHellas.h"
extern float WorldTime;
extern int MoveSceneFrame;
extern float TerrainMappingAlpha[TERRAIN_SIZE*TERRAIN_SIZE];
extern float g_chrome[MAX_VERTICES][2];
void CSWaterTerrain::Init ( void )
{
Vector ( 1.f, -1.f, 1.f, m_vLightVector );
memset ( m_iWaveHeight, 0, sizeof( int )*WATER_TERRAIN_SIZE*WATER_TERRAIN_SIZE*4 );
}
void CSWaterTerrain::Update ( void )
{
if ( !InHellas(m_iMapIndex) ) return;
int WaveX;
int WaveY;
//int Deep1 = (int)( 1050+sin(WorldTime*0.003f)*100 );
if ( (MoveSceneFrame%40)==0 )
{
WaveX = ((Hero->PositionX)*2)+(rand()%30)-15;
WaveY = ((Hero->PositionY)*2)+25;
addSineWave ( WaveX, WaveY, 20, 2, 2000 );
}
m_iWaterPage ^= 1;
calcWave ();
calcBaseWave ();
}
void CSWaterTerrain::Render ( void )
{
if ( !InHellas(m_iMapIndex) ) return;
// ¹°ÁöÇüÀ» »ý¼ºÇÑ´Ù.
CreateTerrain ( (Hero->PositionX)*2, (Hero->PositionY)*2 );
float alpha;
int offset;
int i, j;
for ( i=0; i<MAX_WATER_GRID*MAX_WATER_GRID; i++ )
{
float *Normal = m_Normals[i];
g_chrome[i][0] = Normal[2]*0.5f + 0.1f;
g_chrome[i][1] = Normal[1]*0.5f + 0.5f;
}
EnableAlphaTest ();
BindTexture ( BITMAP_MAPTILE );
glBegin ( GL_TRIANGLES );
glColor3f ( 0.2f, 0.5f, 0.65f );
for ( j=0; j<m_iTriangleListNum; j++ )
{
offset = m_iTriangleList[j];
glTexCoord2f ( g_chrome[offset][1], g_chrome[offset][0] );
glVertex3fv ( m_Vertices[offset] );
}
glEnd();
EnableAlphaBlend ();
BindTexture ( BITMAP_MAPTILE+1 );
glBegin ( GL_TRIANGLES );
for ( j=0; j<m_iTriangleListNum; j++ )
{
offset = m_iTriangleList[j];
alpha = 1.f-DotProduct ( m_Normals[offset], m_vLightVector );
glColor3f( alpha, alpha*2.5f, alpha*3.f );//, alpha );
glTexCoord2f ( g_chrome[offset][1], g_chrome[offset][0] );
glVertex3fv ( m_Vertices[offset] );
}
glEnd();
}
void CSWaterTerrain::CreateTerrain ( int x, int y )
{
float fHeight, fHeight1;
int offset;
int grid = MAX_WATER_GRID/2;
m_iTriangleListNum = 0;
for ( int offY=0, i=y-grid+6; offY<MAX_WATER_GRID; ++i, offY++ )
{
for ( int offX=0, j=x-grid-4; offX<MAX_WATER_GRID; ++j, offX++ )
{
if ( i<0 || j<0 ) fHeight = 350.f;
else if ( i>=WATER_TERRAIN_SIZE || j>=WATER_TERRAIN_SIZE ) fHeight = 350.f;
else
{
offset = j+(i*WATER_TERRAIN_SIZE);
fHeight = m_iWaveHeight[m_iWaterPage][offset]+350.f;
fHeight1 = m_iWaveHeight[2][offset]+350.f;
fHeight1+= m_iWaveHeight[3][offset]+350.f;
fHeight = (fHeight+fHeight1/2.f)/2.f;
// fHeight = fHeight1/2.f;
}
offset = offX+(offY*MAX_WATER_GRID);
Vector ( (float)j*WAVE_SCALE, (float)i*WAVE_SCALE, fHeight, m_Vertices[offset] );
Vector ( 0.f, 0.f, 0.f, m_Normals[offset] );
if ( offX>=MAX_WATER_GRID-1 || offY>=MAX_WATER_GRID-1 )
{
VectorCopy( m_Normals[offset-1], m_Normals[offset] );
continue;
}
// ¸®½ºÆ® ÀÛ¼º.
if ( ( (offX%2)==0 && (offY%2)==0 ) || ( (offX%2)==1 && (offY%2)==1 ) )
{
m_iTriangleList[m_iTriangleListNum+0] = offset;
m_iTriangleList[m_iTriangleListNum+1] = offset+1;
m_iTriangleList[m_iTriangleListNum+2] = offset+1+MAX_WATER_GRID;
m_iTriangleList[m_iTriangleListNum+3] = offset;
m_iTriangleList[m_iTriangleListNum+4] = offset+1+MAX_WATER_GRID;
m_iTriangleList[m_iTriangleListNum+5] = offset+MAX_WATER_GRID;
}
else
{
m_iTriangleList[m_iTriangleListNum+0] = offset;
m_iTriangleList[m_iTriangleListNum+1] = offset+1;
m_iTriangleList[m_iTriangleListNum+2] = offset+MAX_WATER_GRID;
m_iTriangleList[m_iTriangleListNum+3] = offset+1;
m_iTriangleList[m_iTriangleListNum+4] = offset+1+MAX_WATER_GRID;
m_iTriangleList[m_iTriangleListNum+5] = offset+MAX_WATER_GRID;
}
m_iTriangleListNum+=6;
}
}
int v1, v2, v3;
vec3_t normalV;
int NormalNum[MAX_WATER_GRID*MAX_WATER_GRID] = { 0, };
for ( int j=0; j<m_iTriangleListNum; j+=3 )
{
v1 = m_iTriangleList[j+0];
v2 = m_iTriangleList[j+1];
v3 = m_iTriangleList[j+2];
FaceNormalize ( m_Vertices[v1], m_Vertices[v2], m_Vertices[v3], normalV );
VectorAdd ( normalV, m_Normals[v1], m_Normals[v1] );
VectorAdd ( normalV, m_Normals[v2], m_Normals[v2] );
VectorAdd ( normalV, m_Normals[v3], m_Normals[v3] );
NormalNum[v1]++;
NormalNum[v2]++;
NormalNum[v3]++;
}
for (int i=0; i<MAX_WATER_GRID*MAX_WATER_GRID; i++ )
{
m_Normals[i][0] /= (float)(NormalNum[i]);
m_Normals[i][1] /= (float)(NormalNum[i]);
m_Normals[i][2] /= (float)(NormalNum[i]);
VectorNormalize ( m_Normals[i] );
}
}
void CSWaterTerrain::addSineWave ( int x, int y, int radiusX, int radiusY, int height )
{
int* p = &m_iWaveHeight[m_iWaterPage][0];
int cx, cy;
int left, top, right, bottom;
int square;
int radsquare;
float length = (1024.f/(float)radiusX)*(1024.f/(float)radiusX);
if ( x<0 ) x = 1+radiusX+ rand()%(WATER_TERRAIN_SIZE-2*radiusX-1);
if ( y<0 ) y = 1+radiusY+ rand()%(WATER_TERRAIN_SIZE-2*radiusY-1);
// radsquare = (radiusX*radiusX) << 8;
radsquare = ( radiusX*radiusY );
// height /= 8;
left = -radiusX; right = radiusX;
top = -radiusY; bottom = radiusY;
// Perform edge clipping...
if ( (x-radiusX)<1 ) left -= ( x-radiusX-1 );
if ( (y-radiusY)<1 ) top -= ( y-radiusY-1 );
if ( (x+radiusX)>WATER_TERRAIN_SIZE-1 ) right -= ( x+radiusX-WATER_TERRAIN_SIZE+1 );
if ( (y+radiusY)>WATER_TERRAIN_SIZE-1 ) bottom-= ( y+radiusY-WATER_TERRAIN_SIZE+1 );
for ( cy=top; cy<bottom; cy++ )
{
for ( cx=left; cx<right; cx++ )
{
square = cy*cy + cx*cx;
if ( square<radsquare )
{
float dist = sqrtf ( square*length );
int sine = (int)(( cos( dist )+0xffff )*height)>>19;
p[WATER_TERRAIN_SIZE*(cy+y)+cx+x] += sine;
}
}
}
}
void CSWaterTerrain::calcBaseWave ( void )
{
/*
if ( (rand()%10)==0 )
{
m_iSelectWaveX = rand()%WATER_TERRAIN_SIZE;
m_iSelectWaveY = rand()%WATER_TERRAIN_SIZE;
m_iAddHeight = rand()%20+10;
}
*/
int MaxHeight;
int offset;
int HeroX = ( Hero->PositionX )*2;
int HeroY = ( Hero->PositionY )*2;
/*
int HeroX = ( Hero->Object.Position[0]/TERRAIN_SCALE )*2;
int HeroY = ( Hero->Object.Position[1]/TERRAIN_SCALE )*2;
*/
int StartX = max ( 0, HeroX-(VIEW_WATER_GRID/2) );
int StartY = max ( 0, HeroY-(VIEW_WATER_GRID/2) );
int EndX = min ( WATER_TERRAIN_SIZE, HeroX+(VIEW_WATER_GRID/2) );
int EndY = min ( WATER_TERRAIN_SIZE, HeroY+(VIEW_WATER_GRID/2) );
for ( int i=StartY; i<EndY; i++ ) // y
{
for ( int j=StartX; j<EndX; j++ ) // x
{
offset = j+(i*WATER_TERRAIN_SIZE);
float alpha = 0.f;//TerrainMappingAlpha[(j/2)+(i/2)*WATER_TERRAIN_SIZE];
MaxHeight = (int)( sin( (WorldTime*0.005f)+(i*0.1f)+(j*0.1f) )*50*(1+alpha) );
m_iWaveHeight[2][offset] = (int) ( MaxHeight - sin ( (WorldTime*0.003f)+(j*0.1f)+(i*0.5f) )*50*(1+alpha) );
MaxHeight = (int)( sin( (WorldTime*0.001f)+(i*0.5f)+(j*0.5f) )*25*(1+alpha) );
m_iWaveHeight[3][offset] = (int) ( MaxHeight - sin ( (WorldTime*0.002f)+(j*1.f)+(i*0.3f) )*25*(1+alpha) );
}
}
}
void CSWaterTerrain::calcWave ( void )
{
int newh;
int* newptr = &m_iWaveHeight[m_iWaterPage][0];
int* oldptr = &m_iWaveHeight[m_iWaterPage^1][0];
int x;
int y = (WATER_TERRAIN_SIZE-1)*WATER_TERRAIN_SIZE;
for ( int count = WATER_TERRAIN_SIZE+1; count<y; count+=2 )
{
for ( x=count+WATER_TERRAIN_SIZE-2; count<x; count++ )
{
newh = ( ( oldptr[count+WATER_TERRAIN_SIZE]
+ oldptr[count-WATER_TERRAIN_SIZE]
+ oldptr[count+1]
+ oldptr[count-1]
) >> 1 )
- newptr[count];
newptr[count] = newh-( newh>>4 );
}
}
}
float CSWaterTerrain::GetWaterTerrain ( float xf, float yf )
{
int x = (int)(xf/TERRAIN_SCALE*2);
int y = (int)(yf/TERRAIN_SCALE*2);
float fHeight;
if ( m_iWaterPage )
{
fHeight = m_iWaveHeight[1][x+(y*WATER_TERRAIN_SIZE)]+350.f;
}
else
{
fHeight = m_iWaveHeight[0][x+(y*WATER_TERRAIN_SIZE)]+350.f;
}
float fHeight1 = m_iWaveHeight[2][x+(y*WATER_TERRAIN_SIZE)]+350.f;
fHeight1+= m_iWaveHeight[3][x+(y*WATER_TERRAIN_SIZE)]+350.f;
fHeight = (fHeight+fHeight1/2.f)/4.f;
return fHeight;
}
void CSWaterTerrain::RenderWaterAlphaBitmap ( int Texture, float xf, float yf, float SizeX, float SizeY, vec3_t Light, float Rotation, float Alpha, float Height )
{
if(Alpha==1.f)
glColor3fv(Light);
else
glColor4f(Light[0],Light[1],Light[2],Alpha);
vec3_t Angle;
Vector(0.f,0.f,Rotation,Angle);
float Matrix[3][4];
AngleMatrix(Angle,Matrix);
BindTexture(Texture);
float mxf = (xf/TERRAIN_SCALE*2);
float myf = (yf/TERRAIN_SCALE*2);
int mxi = (int)(mxf);
int myi = (int)(myf);
float Size;
if(SizeX >= SizeY)
Size = SizeX;
else
Size = SizeY;
float TexU = (((float)mxi-mxf)+0.5f*Size);
float TexV = (((float)myi-myf)+0.5f*Size);
float TexScaleU = 1.f/Size;
float TexScaleV = 1.f/Size;
Size = (float)((int)Size+1);
float Aspect = SizeX/SizeY;
for(float y=-Size;y<=Size;y+=1.f)
{
for(float x=-Size;x<=Size;x+=1.f)
{
vec3_t p1[4],p2[4];
Vector((TexU+x )*TexScaleU,(TexV+y )*TexScaleV,0.f,p1[0]);
Vector((TexU+x+1.f)*TexScaleU,(TexV+y )*TexScaleV,0.f,p1[1]);
Vector((TexU+x+1.f)*TexScaleU,(TexV+y+1.f)*TexScaleV,0.f,p1[2]);
Vector((TexU+x )*TexScaleU,(TexV+y+1.f)*TexScaleV,0.f,p1[3]);
//bool Clip = false;
for(int i=0;i<4;i++)
{
p1[i][0] -= 0.5f;
p1[i][1] -= 0.5f;
VectorRotate(p1[i],Matrix,p2[i]);
p2[i][0] *= Aspect;
p2[i][0] += 0.5f;
p2[i][1] += 0.5f;
//if((p2[i][0]>=0.f && p2[i][0]<=1.f) || (p2[i][1]>=0.f && p2[i][1]<=1.f)) Clip = true;
}
//if(Clip==true)
RenderWaterBitmapTile((float)mxi+x,(float)myi+y,1.f,1,p2,false,Alpha,Height);
}
}
}
void CSWaterTerrain::RenderWaterBitmapTile(float xf,float yf,float lodf,int lodi,vec3_t c[4],bool LightEnable,float Alpha,float Height)
{
vec3_t TerrainVertex[4];
int xi = (int)xf;
int yi = (int)yf;
if(xi<0 || yi<0 || xi>=TERRAIN_SIZE_MASK || yi>=TERRAIN_SIZE_MASK) return;
float TileScale = WAVE_SCALE;
float sx = xf*WAVE_SCALE;
float sy = yf*WAVE_SCALE;
int TerrainIndex1 = xi+(yi*WATER_TERRAIN_SIZE);
int TerrainIndex2 = xi+lodi+(yi*WATER_TERRAIN_SIZE);
int TerrainIndex3 = xi+lodi+((yi+lodi)*WATER_TERRAIN_SIZE);
int TerrainIndex4 = xi+((yi+lodi)*WATER_TERRAIN_SIZE);
Vector(sx ,sy ,m_iWaveHeight[0][TerrainIndex1]+400.f+Height,TerrainVertex[0]);
Vector(sx+TileScale,sy ,m_iWaveHeight[0][TerrainIndex2]+400.f+Height,TerrainVertex[1]);
Vector(sx+TileScale,sy+TileScale,m_iWaveHeight[0][TerrainIndex3]+400.f+Height,TerrainVertex[2]);
Vector(sx ,sy+TileScale,m_iWaveHeight[0][TerrainIndex4]+400.f+Height,TerrainVertex[3]);
vec3_t Light[4];
if(LightEnable)
{
VectorCopy(PrimaryTerrainLight[TerrainIndex1],Light[0]);
VectorCopy(PrimaryTerrainLight[TerrainIndex2],Light[1]);
VectorCopy(PrimaryTerrainLight[TerrainIndex3],Light[2]);
VectorCopy(PrimaryTerrainLight[TerrainIndex4],Light[3]);
}
glBegin(GL_TRIANGLE_FAN);
for(int i=0;i<4;i++)
{
if(LightEnable)
{
if(Alpha==1.f)
glColor3fv(Light[i]);
else
glColor4f(Light[i][0],Light[i][1],Light[i][2],Alpha);
}
glTexCoord2f(c[i][0],c[i][1]);
glVertex3fv(TerrainVertex[i]);
}
glEnd();
}
bool CMapManager::InHellas(int iMap)
{
return ((this->WorldActive>=WD_24HELLAS && this->WorldActive<=WD_24HELLAS_END) || (this->WorldActive==WD_24HELLAS_7));
}
bool CMapManager::InHiddenHellas(int iMap)
{
return (this->WorldActive==WD_24HELLAS_7) ? true : false;
}
UPDATE:
Source Main 5.2 (VS2022) + NvAPI + Intel Support
-Compatibilidade com windows 7~10 via código.
-Compatibilidade com GPU AMD/NVIDIA.
-Compatibilidade com processadores AMD/INTEL mais recentes.
- Suporte para Nvidia/AMD/Intel.
Modificados:
WinMain.cpp
Adicionados:
nvapi.h
NvApiDriverSettings.hModificados:- Suporte para processadores Intel mais recentes e melhorias no suporte de sistema operacional.
sysinfo.cpp
sysinfo.h
Adicionados:
intrinsics.h
platform.h
constants.h
UPDATE:
Source Main 5.2 (VS2022) + NvAPI + Intel Support
-Compatibilidade com windows 7~10 via código.
-Compatibilidade com GPU AMD/NVIDIA.
-Compatibilidade com processadores AMD/INTEL mais recentes.- Suporte para Nvidia/AMD/Intel.
Modificados:
WinMain.cpp
Adicionados:
nvapi.h
NvApiDriverSettings.hModificados:- Suporte para processadores Intel mais recentes e melhorias no suporte de sistema operacional.
sysinfo.cpp
sysinfo.h
Adicionados:
intrinsics.h
platform.h
constants.h
What server source code are you using to be able to log into the game? can you share? I use louis up 15 but wrong packet can't log in. Thanks for your sharing
//#define NEW_PROTOCOL_SYSTEM
UPDATE:
Source Main 5.2 (VS2022) + NvAPI + Intel Support
-Compatibilidade com windows 7~10 via código.
-Compatibilidade com GPU AMD/NVIDIA.
-Compatibilidade com processadores AMD/INTEL mais recentes.- Suporte para Nvidia/AMD/Intel.
Modificados:
WinMain.cpp
Adicionados:
nvapi.h
NvApiDriverSettings.hModificados:- Suporte para processadores Intel mais recentes e melhorias no suporte de sistema operacional.
sysinfo.cpp
sysinfo.h
Adicionados:
intrinsics.h
platform.h
constants.h
What server source code are you using to be able to log into the game? can you share? I use louis up 15 but wrong packet can't log in. Thanks for your sharing
Vào source tìm Defined_Global.h xong xoá cái NEW_PROTOCOL_SYSTEM hoặc // nó đi như này này:Code: [Select]Cả GS lẫn Main nhé.//#define NEW_PROTOCOL_SYSTEM
Algêm ai conseguiu corrigir o modo de tela cheia?
Algêm ai conseguiu corrigir o modo de tela cheia?
I'm working with auto-attack, with the protocol, it only transmits information from gs -> client :(
Please share Source with RF included. When I turn on #define RF the client closes at the end of the download, if I start debugging through VS it gives an error EnсhTerrain74.obj and the client closes.
#ifndef GAMESERVER_SEASON
#define GAMESERVER_SEASON "CUSTOM"
#endif // !GAMESERVER_SEASON
Please share Source with RF included. When I turn on #define RF the client closes at the end of the download, if I start debugging through VS it gives an error EnсhTerrain74.obj and the client closes.
Source client + client RF (Global Debug folder)
RF + set Phoenix, doesn't make Phoenix Shot skill yet.
https://mega.nz/file/lGAClD5B#EXrZJ89FUxY2bj_h6mpa4t5m_A2EEQERZaBUWdR_sR8
GS:
stdafx.h add:Code: [Select]#ifndef GAMESERVER_SEASON
#define GAMESERVER_SEASON "CUSTOM"
#endif // !GAMESERVER_SEASON
(https://upanh.tv/image/dlxVHE)
Please share Source with RF included. When I turn on #define RF the client closes at the end of the download, if I start debugging through VS it gives an error EnсhTerrain74.obj and the client closes.
Source client + client RF (Global Debug folder)
RF + set Phoenix, doesn't make Phoenix Shot skill yet.
https://mega.nz/file/lGAClD5B#EXrZJ89FUxY2bj_h6mpa4t5m_A2EEQERZaBUWdR_sR8
GS:
stdafx.h add:Code: [Select]#ifndef GAMESERVER_SEASON
#define GAMESERVER_SEASON "CUSTOM"
#endif // !GAMESERVER_SEASON
(https://upanh.tv/image/dlxVHE)
tks ông nhé please
Please share Source with RF included. When I turn on #define RF the client closes at the end of the download, if I start debugging through VS it gives an error EnсhTerrain74.obj and the client closes.
Source client + client RF (Global Debug folder)
RF + set Phoenix, doesn't make Phoenix Shot skill yet.
https://mega.nz/file/lGAClD5B#EXrZJ89FUxY2bj_h6mpa4t5m_A2EEQERZaBUWdR_sR8
GS:
ông fix các file nào ông có thể bóc code ra đc ko ông @_@ chứ ông gửi về build lại chạy mấy file ko được
stdafx.h add:Code: [Select]#ifndef GAMESERVER_SEASON
#define GAMESERVER_SEASON "CUSTOM"
#endif // !GAMESERVER_SEASON
(https://upanh.tv/image/dlxVHE)
RF 100%
(https://i.postimg.cc/1VVTHSXn/Screen-03-14-14-22-0000.jpg) (https://postimg.cc/1VVTHSXn)
Can share source?
Excelente aporte Louis. ¿Qué le faltaría a éstos archivos para poder ser usados en un servidor estable?Le falta todo para un server estable, actualmente puedes usarlo en s4 y hacerle dowgrade a la versión que quieras sea 99b, s1,S3 por qué si quieres upgradearlos le falta mucho por qué apenas es s5 epi 2, si realmente tienes cocimiento o quieres entrarle bien, se pueden hacer muchísimas cosas con esto
Excelente aporte Louis. ¿Qué le faltaría a éstos archivos para poder ser usados en un servidor estable?Le falta todo para un server estable, actualmente puedes usarlo en s4 y hacerle dowgrade a la versión que quieras sea 99b, s1,S3 por qué si quieres upgradearlos le falta mucho por qué apenas es s5 epi 2, si realmente tienes cocimiento o quieres entrarle bien, se pueden hacer muchísimas cosas con esto
Excelente aporte Louis. ¿Qué le faltaría a éstos archivos para poder ser usados en un servidor estable?Le falta todo para un server estable, actualmente puedes usarlo en s4 y hacerle dowgrade a la versión que quieras sea 99b, s1,S3 por qué si quieres upgradearlos le falta mucho por qué apenas es s5 epi 2, si realmente tienes cocimiento o quieres entrarle bien, se pueden hacer muchísimas cosas con esto
Ésta era la data que necesitaba! Gracias RinOv.
Voy a arrancar un downgrade a S3, así que calculo que con todo ésto es más que suficiente. Conocimientos programando tengo, pero nunca me puse a entrarle a un downgrade. Tengo que ver cómo es el tema de interfaces. Veremos qué sale.
What does this NEW_PROTOCOL_SYSTEM exactly do?
https://prnt.sc/23p1uw5 (https://prnt.sc/23p1uw5)
https://prnt.sc/23p1xlp (https://prnt.sc/23p1xlp)
This is a new protocol type using Asio source,I was studying it and I decided to put
you can use webzen default protocol:
Disable in Main:
#define NEW_PROTOCOL_SYSTEM
Disable in gameserver:
#define NEW_PROTOCOL_SYSTEM 0
Does anyone have the Phoenix Shot skill added to the source?
I will share what I have for Mu Helper for the Phoenix Shot Skill (Added the input boxes, extra item list, ranges for both pickup and attack).
where to add?
//HealthBar 100%
void RenderMonsterHP()
{
float Width = 38.f;
char Text[100];
for (int j = 0; j < MAX_CHARACTERS_CLIENT; ++j)
{
CHARACTER* c = &CharactersClient[j];
OBJECT* o = &c->Object;
vec3_t Position;
int ScreenX, ScreenY;
if (KIND_MONSTER == c->Object.Kind && MODEL_PLAYER != c->Object.Type && c->Object.Kind != KIND_TRAP)
{
BYTE LifePercent = 80;
Vector(o->Position[0], o->Position[1], o->Position[2] + o->BoundingBoxMax[2] + 100.f, Position);
Projection(Position, &ScreenX, &ScreenY);
ScreenX -= (int)(Width / 2);
if (o->Live && KIND_NPC != c->Object.Kind)
{
NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(c->Key, c->Object.Kind);
if (lpNewHealthBar == NULL)continue;
int LifePercent = lpNewHealthBar->rate ;
int ShieldPercent = lpNewHealthBar->rate2 ;
float iHP = (float)(LifePercent * 72) / 100;
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR_BACK, ScreenX, ScreenY - 5, 75.f, 5.f);
if(c->Dead != 0)
{
iHP -= c->Dead;
if (iHP <= 0)
{
iHP = 0;
}
}
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR, ScreenX + 2, ScreenY - 4, iHP, 3.f);
g_pRenderText->SetFont(g_hFont);
if (c->Dead != 0)
{
sprintf(Text, "%s die...", c->ID);
}
else
{
sprintf(Text, "%s", c->ID);
}
g_pRenderText->SetTextColor(255, 230, 210, 255);
g_pRenderText->RenderText(ScreenX, ScreenY - 13, Text, 75.f, 0, RT3_SORT_CENTER);
}
}
}
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}
(https://i.postimg.cc/ctMJYSS4/20220306100207.png) (https://postimg.cc/ctMJYSS4)
where to add?
//HealthBar 100%
void RenderMonsterHP()
{
float Width = 38.f;
char Text[100];
for (int j = 0; j < MAX_CHARACTERS_CLIENT; ++j)
{
CHARACTER* c = &CharactersClient[j];
OBJECT* o = &c->Object;
vec3_t Position;
int ScreenX, ScreenY;
if (KIND_MONSTER == c->Object.Kind && MODEL_PLAYER != c->Object.Type && c->Object.Kind != KIND_TRAP)
{
BYTE LifePercent = 80;
Vector(o->Position[0], o->Position[1], o->Position[2] + o->BoundingBoxMax[2] + 100.f, Position);
Projection(Position, &ScreenX, &ScreenY);
ScreenX -= (int)(Width / 2);
if (o->Live && KIND_NPC != c->Object.Kind)
{
NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(c->Key, c->Object.Kind);
if (lpNewHealthBar == NULL)continue;
int LifePercent = lpNewHealthBar->rate ;
int ShieldPercent = lpNewHealthBar->rate2 ;
float iHP = (float)(LifePercent * 72) / 100;
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR_BACK, ScreenX, ScreenY - 5, 75.f, 5.f);
if(c->Dead != 0)
{
iHP -= c->Dead;
if (iHP <= 0)
{
iHP = 0;
}
}
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR, ScreenX + 2, ScreenY - 4, iHP, 3.f);
g_pRenderText->SetFont(g_hFont);
if (c->Dead != 0)
{
sprintf(Text, "%s die...", c->ID);
}
else
{
sprintf(Text, "%s", c->ID);
}
g_pRenderText->SetTextColor(255, 230, 210, 255);
g_pRenderText->RenderText(ScreenX, ScreenY - 13, Text, 75.f, 0, RT3_SORT_CENTER);
}
}
}
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}
(https://i.postimg.cc/ctMJYSS4/20220306100207.png) (https://postimg.cc/ctMJYSS4)
where to add?
//HealthBar 100%
void RenderMonsterHP()
{
float Width = 38.f;
char Text[100];
for (int j = 0; j < MAX_CHARACTERS_CLIENT; ++j)
{
CHARACTER* c = &CharactersClient[j];
OBJECT* o = &c->Object;
vec3_t Position;
int ScreenX, ScreenY;
if (KIND_MONSTER == c->Object.Kind && MODEL_PLAYER != c->Object.Type && c->Object.Kind != KIND_TRAP)
{
BYTE LifePercent = 80;
Vector(o->Position[0], o->Position[1], o->Position[2] + o->BoundingBoxMax[2] + 100.f, Position);
Projection(Position, &ScreenX, &ScreenY);
ScreenX -= (int)(Width / 2);
if (o->Live && KIND_NPC != c->Object.Kind)
{
NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(c->Key, c->Object.Kind);
if (lpNewHealthBar == NULL)continue;
int LifePercent = lpNewHealthBar->rate ;
int ShieldPercent = lpNewHealthBar->rate2 ;
float iHP = (float)(LifePercent * 72) / 100;
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR_BACK, ScreenX, ScreenY - 5, 75.f, 5.f);
if(c->Dead != 0)
{
iHP -= c->Dead;
if (iHP <= 0)
{
iHP = 0;
}
}
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR, ScreenX + 2, ScreenY - 4, iHP, 3.f);
g_pRenderText->SetFont(g_hFont);
if (c->Dead != 0)
{
sprintf(Text, "%s die...", c->ID);
}
else
{
sprintf(Text, "%s", c->ID);
}
g_pRenderText->SetTextColor(255, 230, 210, 255);
g_pRenderText->RenderText(ScreenX, ScreenY - 13, Text, 75.f, 0, RT3_SORT_CENTER);
}
}
}
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}
(https://i.postimg.cc/ctMJYSS4/20220306100207.png) (https://postimg.cc/ctMJYSS4)
lahpbar ya existe lado files, solo tienes que armarlo cliente, busca cualquier files muemu source main: HealthBar.cpp y HealthBar.h para la base y reemplazar el contenido la funcioon DrawNewHealthBar() por void RenderMonsterHP()
por ultimo busca su referencias ya que debes enviarlo por protocol, en source 5.2 es wsclient en teoria con eso deberia funcionar luego reviso
Could not find the function DrawNewHealthBar()
where to add?
//HealthBar 100%
void RenderMonsterHP()
{
float Width = 38.f;
char Text[100];
for (int j = 0; j < MAX_CHARACTERS_CLIENT; ++j)
{
CHARACTER* c = &CharactersClient[j];
OBJECT* o = &c->Object;
vec3_t Position;
int ScreenX, ScreenY;
if (KIND_MONSTER == c->Object.Kind && MODEL_PLAYER != c->Object.Type && c->Object.Kind != KIND_TRAP)
{
BYTE LifePercent = 80;
Vector(o->Position[0], o->Position[1], o->Position[2] + o->BoundingBoxMax[2] + 100.f, Position);
Projection(Position, &ScreenX, &ScreenY);
ScreenX -= (int)(Width / 2);
if (o->Live && KIND_NPC != c->Object.Kind)
{
NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(c->Key, c->Object.Kind);
if (lpNewHealthBar == NULL)continue;
int LifePercent = lpNewHealthBar->rate ;
int ShieldPercent = lpNewHealthBar->rate2 ;
float iHP = (float)(LifePercent * 72) / 100;
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR_BACK, ScreenX, ScreenY - 5, 75.f, 5.f);
if(c->Dead != 0)
{
iHP -= c->Dead;
if (iHP <= 0)
{
iHP = 0;
}
}
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR, ScreenX + 2, ScreenY - 4, iHP, 3.f);
g_pRenderText->SetFont(g_hFont);
if (c->Dead != 0)
{
sprintf(Text, "%s die...", c->ID);
}
else
{
sprintf(Text, "%s", c->ID);
}
g_pRenderText->SetTextColor(255, 230, 210, 255);
g_pRenderText->RenderText(ScreenX, ScreenY - 13, Text, 75.f, 0, RT3_SORT_CENTER);
}
}
}
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}
(https://i.postimg.cc/ctMJYSS4/20220306100207.png) (https://postimg.cc/ctMJYSS4)
lahpbar ya existe lado files, solo tienes que armarlo cliente, busca cualquier files muemu source main: HealthBar.cpp y HealthBar.h para la base y reemplazar el contenido la funcioon DrawNewHealthBar() por void RenderMonsterHP()
por ultimo busca su referencias ya que debes enviarlo por protocol, en source 5.2 es wsclient en teoria con eso deberia funcionar luego reviso
Alguien está trabajando estos files? Voy a comenzar a meterle mano y fix cosas , si tienen bug reporte los y los reparamos
Empezaré con la s4 ya que hay cosas mezcladas del 502 en el 401
Alguien está trabajando estos files? Voy a comenzar a meterle mano y fix cosas , si tienen bug reporte los y los reparamos
Empezaré con la s4 ya que hay cosas mezcladas del 502 en el 401
Could not find the function DrawNewHealthBar()
where to add?
//HealthBar 100%
void RenderMonsterHP()
{
float Width = 38.f;
char Text[100];
for (int j = 0; j < MAX_CHARACTERS_CLIENT; ++j)
{
CHARACTER* c = &CharactersClient[j];
OBJECT* o = &c->Object;
vec3_t Position;
int ScreenX, ScreenY;
if (KIND_MONSTER == c->Object.Kind && MODEL_PLAYER != c->Object.Type && c->Object.Kind != KIND_TRAP)
{
BYTE LifePercent = 80;
Vector(o->Position[0], o->Position[1], o->Position[2] + o->BoundingBoxMax[2] + 100.f, Position);
Projection(Position, &ScreenX, &ScreenY);
ScreenX -= (int)(Width / 2);
if (o->Live && KIND_NPC != c->Object.Kind)
{
NEW_HEALTH_BAR* lpNewHealthBar = GetNewHealthBar(c->Key, c->Object.Kind);
if (lpNewHealthBar == NULL)continue;
int LifePercent = lpNewHealthBar->rate ;
int ShieldPercent = lpNewHealthBar->rate2 ;
float iHP = (float)(LifePercent * 72) / 100;
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR_BACK, ScreenX, ScreenY - 5, 75.f, 5.f);
if(c->Dead != 0)
{
iHP -= c->Dead;
if (iHP <= 0)
{
iHP = 0;
}
}
SEASON3B::RenderImage(BITMAP_MONSTER_HPBAR, ScreenX + 2, ScreenY - 4, iHP, 3.f);
g_pRenderText->SetFont(g_hFont);
if (c->Dead != 0)
{
sprintf(Text, "%s die...", c->ID);
}
else
{
sprintf(Text, "%s", c->ID);
}
g_pRenderText->SetTextColor(255, 230, 210, 255);
g_pRenderText->RenderText(ScreenX, ScreenY - 13, Text, 75.f, 0, RT3_SORT_CENTER);
}
}
}
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
DisableAlphaBlend();
glColor3f(1.f, 1.f, 1.f);
}
(https://i.postimg.cc/ctMJYSS4/20220306100207.png) (https://postimg.cc/ctMJYSS4)
lahpbar ya existe lado files, solo tienes que armarlo cliente, busca cualquier files muemu source main: HealthBar.cpp y HealthBar.h para la base y reemplazar el contenido la funcioon DrawNewHealthBar() por void RenderMonsterHP()
por ultimo busca su referencias ya que debes enviarlo por protocol, en source 5.2 es wsclient en teoria con eso deberia funcionar luego reviso
Don't just copy and paste, understand the tutorial and how to do it
Can someone provide the source code for MU help?+, does anyone have Mu Helper sources ?
Can someone provide the source code for MU help?+, does anyone have Mu Helper sources ?
llorando2 Toàn coppy pate mà
có bán source ko bro
llorando2 Toàn coppy pate mà
có bán source ko bro
thế có bán full source không?không nha bạn. đây là những gì mình làm cho sv của minh, nó chỉ là chia sẻ ý tưởng
MOD/FIX golpes
Glow nos fenrir RED/BLUE/BLACK
Bônus correção do comando /trade
(https://i.ibb.co/kmBM2zz/Screen-04-14-15-49-0001.jpg)
(https://i.ibb.co/bP6CchY/Screen-04-14-15-49-0002.jpg)
Em breve posto source com várias correções, porém tenho um erro de Personal Shop não abrir se alguém tiver a solução posto imediatamente a source após correção
Full S6.3 :Daplausos hello bk109 drogado drogado drogado
https://imgur.com/a/VkysnBt
Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
The "Developer" right now job custom xDDD bug + bug = ??
New developer = Nemesis
wtf si Nemesis se la pasa metiendo nuevos personajes, nuevos skills jaja es más de lo mismo. Nada de fixs, nada de mejoras, sólo custom tras custom. Mejor dejá de chuparle un poco las medias que ya bastante crecidito tiene el ego.
This Thread is Not updated/updating.a
Reason: Louis posted this project to clean & organize the source & client and fix what's inside the source but people here are adding features that will cause more bugs that need to be fixed also, Louis and his team is removing those other features to lessen the bugs but you guys are getting it back to source lols, it will be a waste of time.
My point is, Let's Fix everything here, on what was originally posted. Test everything, make a correction, Let's build a clean and stable server. :D :)
-No RF
-No Master Skill Tree
-No Custom Events
-No Custom NPC
-No Custom Wings
-and No Other ugly stuff lol
Let's stay Original and minimize & fix the bugs, don't do the b@d math here which is BUGs+BUGs lols :D
PS. I'm not a pro coder here, besides I'm just a beginner but I'm ready to learn and contribute here soon. :)
Don't be mad at me, I'm just expressing my thought and understanding about this Thread. :)
Thank You. :)
This Thread is Not updated/updating.a
Reason: Louis posted this project to clean & organize the source & client and fix what's inside the source but people here are adding features that will cause more bugs that need to be fixed also, Louis and his team is removing those other features to lessen the bugs but you guys are getting it back to source lols, it will be a waste of time.
My point is, Let's Fix everything here, on what was originally posted. Test everything, make a correction, Let's build a clean and stable server. :D :)
-No RF
-No Master Skill Tree
-No Custom Events
-No Custom NPC
-No Custom Wings
-and No Other ugly stuff lol
Let's stay Original and minimize & fix the bugs, don't do the b@d math here which is BUGs+BUGs lols :D
PS. I'm not a pro coder here, besides I'm just a beginner but I'm ready to learn and contribute here soon. :)
Don't be mad at me, I'm just expressing my thought and understanding about this Thread. :)
Thank You. :)
a
ajaja no se de que te quejas ajaja
nos toca hacer un enrredo con los files ya que no tenemos mucho conocimiento
si quieres algo organizado como LOUIS
dile que comprata la fuente de su update 34 y alli nosotros continuamos
muy ordenado como dices ajaajajajaja
This Thread is Not updated/updating.
Reason: Louis posted this project to clean & organize the source & client and fix what's inside the source but people here are adding features that will cause more bugs that need to be fixed also, Louis and his team is removing those other features to lessen the bugs but you guys are getting it back to source lols, it will be a waste of time.
My point is, Let's Fix everything here, on what was originally posted. Test everything, make a correction, Let's build a clean and stable server. :D :)
-No RF
-No Master Skill Tree
-No Custom Events
-No Custom NPC
-No Custom Wings
-and No Other ugly stuff lol
Let's stay Original and minimize & fix the bugs, don't do the b@d math here which is BUGs+BUGs lols :D
PS. I'm not a pro coder here, besides I'm just a beginner but I'm ready to learn and contribute here soon. :)
Don't be mad at me, I'm just expressing my thought and understanding about this Thread. :)
Thank You. :)
_____________________________________
Legends says......Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
The "Developer" right now job custom xDDD bug + bug = ??
New developer = Nemesiswtf si Nemesis se la pasa metiendo nuevos personajes, nuevos skills jaja es más de lo mismo. Nada de fixs, nada de mejoras, sólo custom tras custom. Mejor dejá de chuparle un poco las medias que ya bastante crecidito tiene el ego.
This Thread is Not updated/updating.
Reason: Louis posted this project to clean & organize the source & client and fix what's inside the source but people here are adding features that will cause more bugs that need to be fixed also, Louis and his team is removing those other features to lessen the bugs but you guys are getting it back to source lols, it will be a waste of time.
My point is, Let's Fix everything here, on what was originally posted. Test everything, make a correction, Let's build a clean and stable server. :D :)
-No RF
-No Master Skill Tree
-No Custom Events
-No Custom NPC
-No Custom Wings
-and No Other ugly stuff lol
Let's stay Original and minimize & fix the bugs, don't do the b@d math here which is BUGs+BUGs lols :D
PS. I'm not a pro coder here, besides I'm just a beginner but I'm ready to learn and contribute here soon. :)
Don't be mad at me, I'm just expressing my thought and understanding about this Thread. :)
Thank You. :)
_____________________________________
Legends says......Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)Before sharing all stupid customs, i think it would be better if we focus on sharing fixes and improvements for the main.
Just saying :)
The "Developer" right now job custom xDDD bug + bug = ??
New developer = Nemesiswtf si Nemesis se la pasa metiendo nuevos personajes, nuevos skills jaja es más de lo mismo. Nada de fixs, nada de mejoras, sólo custom tras custom. Mejor dejá de chuparle un poco las medias que ya bastante crecidito tiene el ego.
@louisBrother, have you solved it yet
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
@louisBrother, have you solved it yet
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
en lo main desativa el #define NEW_PROTOCOL_SYSTEM@louisBrother, have you solved it yet
por que pasa esto?? le doy login para que inicie y se queda hay colgado ya pobre todo xd
(https://i.ibb.co/1q3VGds/Screenshot-2.png)
Please read the posts so far, there are many bugs that have been fixed and posted
en lo main desativa el #define NEW_PROTOCOL_SYSTEM
e coloca en lo gs #define NEW_PROTOCOL_SYSTEM 0
para probar
Brother. I modified it according to this. Still can't log in. Do you know what's going on?
void CLoginWin::ConnectConnectionServer()
{
//Edit
//#ifdef NEW_PROTOCOL_SYSTEM
//gProtocolSend.DisconnectServer();
//#endif
//Edit added s6
SocketClient.Close();
LogIn = 0;
CurrentProtocolState = REQUEST_JOIN_SERVER;
CreateSocket(szServerIpAddress, g_ServerPort);
}
I also had a problem with the connection. I completely commented out NEW_PROTOCOL and it didn't solve the problem. Then I started looking for the difference in the 5.2 code with decompiled s6 and found the differences. Maybe this will help youBrother, have you solved it?Code: [Select]void CLoginWin::ConnectConnectionServer()
{
//Edit
//#ifdef NEW_PROTOCOL_SYSTEM
//gProtocolSend.DisconnectServer();
//#endif
//Edit added s6
SocketClient.Close();
LogIn = 0;
CurrentProtocolState = REQUEST_JOIN_SERVER;
CreateSocket(szServerIpAddress, g_ServerPort);
}
I also had a problem with the connection. I completely commented out NEW_PROTOCOL and it didn't solve the problem. Then I started looking for the difference in the 5.2 code with decompiled s6 and found the differences. Maybe this will help youBrother, have you solved it?Code: [Select]void CLoginWin::ConnectConnectionServer()
{
//Edit
//#ifdef NEW_PROTOCOL_SYSTEM
//gProtocolSend.DisconnectServer();
//#endif
//Edit added s6
SocketClient.Close();
LogIn = 0;
CurrentProtocolState = REQUEST_JOIN_SERVER;
CreateSocket(szServerIpAddress, g_ServerPort);
}
Brother, I used it. Your code doesn't work eitherI also had a problem with the connection. I completely commented out NEW_PROTOCOL and it didn't solve the problem. Then I started looking for the difference in the 5.2 code with decompiled s6 and found the differences. Maybe this will help youBrother, have you solved it?Code: [Select]void CLoginWin::ConnectConnectionServer()
{
//Edit
//#ifdef NEW_PROTOCOL_SYSTEM
//gProtocolSend.DisconnectServer();
//#endif
//Edit added s6
SocketClient.Close();
LogIn = 0;
CurrentProtocolState = REQUEST_JOIN_SERVER;
CreateSocket(szServerIpAddress, g_ServerPort);
}
I decided it a long time ago. Have you tried replacing the code I gave?
Estoy agregando las resoluciones HD, pero tengo este problema, no se donde encontrar para arreglarlo, alguien me da una mano o alguna solucion para que no aparezcan los bloues negros?
how to fixed
(https://i.imgur.com/xXniypT.jpg)
Edit: Solucionado!
(https://i.imgur.com/hT1BM1X.png)
Can you tell us how you fixed it ?
Update:
Thanks Already Fixed.
bool TestFrustrum2D(float x, float y, float Range)Estoy agregando las resoluciones HD, pero tengo este problema, no se donde encontrar para arreglarlo, alguien me da una mano o alguna solucion para que no aparezcan los bloues negros?
how to fixed
(https://i.imgur.com/xXniypT.jpg)
Edit: Solucionado!
(https://i.imgur.com/hT1BM1X.png)
Can you tell us how you fixed it ?
Update:
Thanks Already Fixed.
(https://i.upanh.org/2023/10/18/Capture3011de6bfc4b87e6.png)
master skill tree complace cool2
Is it forbidden to post photos here? cool2 and here is the forum for "code" or for copy and paste(https://i.upanh.org/2023/10/18/Capture3011de6bfc4b87e6.png)
master skill tree complace cool2
Share the code. Otherwise, what's the point of posting this here? Do you want to brag? cheesyy2
g_pChatInputBox->Create(g_pNewUISystem->GetNewUIManager(), g_pNewUISystem->GetUI_NewChatLogWindow(), 0, 382);
void ResizeWindow(int Resolution, int Width, int Height)
{
m_Resolution = Resolution;
WindowWidth = Width;
WindowHeight = Height;
g_fScreenRate_x = (float)Width / 640.0;
g_fScreenRate_y = (float)Height / 480.0;
DWORD window_style;
if (g_bUseWindowMode == TRUE)
window_style = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_SYSMENU | WS_CAPTION;
else
window_style = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CLIPCHILDREN | WS_SYSMENU | WS_THICKFRAME | WS_CAPTION;
tagRECT rect;
rect.left = 0;
rect.top = 0;
rect.right = Width;
rect.bottom = Height;
AdjustWindowRect(&rect, window_style, 0);
rect.right -= rect.left;
rect.bottom -= rect.top;
int pos_x = (GetSystemMetrics(SM_CXSCREEN) - rect.right) / 2;
int pos_y = (GetSystemMetrics(SM_CYSCREEN) - rect.bottom) / 2;
SetWindowPos(g_hWnd, HWND_TOP, pos_x, pos_y, rect.right, rect.bottom, /*SWP_NOMOVE | */SWP_SHOWWINDOW | SWP_FRAMECHANGED);
OpenFont();
ClearInput();
}
Hello. When I resize the window all TextInpuBoxes stop displaying text normally. Does anyone know how to fix this?
If I call this function, the chatbox displays the text correctly. But I don't think this is the right solution to this problem. And you need to update all other textboxes they are in Create Guild, Personal ShopCode: [Select]g_pChatInputBox->Create(g_pNewUISystem->GetNewUIManager(), g_pNewUISystem->GetUI_NewChatLogWindow(), 0, 382);
Code: [Select]void ResizeWindow(int Resolution, int Width, int Height)
{
m_Resolution = Resolution;
WindowWidth = Width;
WindowHeight = Height;
g_fScreenRate_x = (float)Width / 640.0;
g_fScreenRate_y = (float)Height / 480.0;
DWORD window_style;
if (g_bUseWindowMode == TRUE)
window_style = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_SYSMENU | WS_CAPTION;
else
window_style = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CLIPCHILDREN | WS_SYSMENU | WS_THICKFRAME | WS_CAPTION;
tagRECT rect;
rect.left = 0;
rect.top = 0;
rect.right = Width;
rect.bottom = Height;
AdjustWindowRect(&rect, window_style, 0);
rect.right -= rect.left;
rect.bottom -= rect.top;
int pos_x = (GetSystemMetrics(SM_CXSCREEN) - rect.right) / 2;
int pos_y = (GetSystemMetrics(SM_CYSCREEN) - rect.bottom) / 2;
SetWindowPos(g_hWnd, HWND_TOP, pos_x, pos_y, rect.right, rect.bottom, /*SWP_NOMOVE | */SWP_SHOWWINDOW | SWP_FRAMECHANGED);
OpenFont();
ClearInput();
}
(https://i.imgur.com/siVfS9G.jpg)
(https://i.imgur.com/U8NGoFp.jpg)
Hello. When I resize the window all TextInpuBoxes stop displaying text normally. Does anyone know how to fix this?
If I call this function, the chatbox displays the text correctly. But I don't think this is the right solution to this problem. And you need to update all other textboxes they are in Create Guild, Personal ShopCode: [Select]g_pChatInputBox->Create(g_pNewUISystem->GetNewUIManager(), g_pNewUISystem->GetUI_NewChatLogWindow(), 0, 382);
Code: [Select]void ResizeWindow(int Resolution, int Width, int Height)
{
m_Resolution = Resolution;
WindowWidth = Width;
WindowHeight = Height;
g_fScreenRate_x = (float)Width / 640.0;
g_fScreenRate_y = (float)Height / 480.0;
DWORD window_style;
if (g_bUseWindowMode == TRUE)
window_style = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_SYSMENU | WS_CAPTION;
else
window_style = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CLIPCHILDREN | WS_SYSMENU | WS_THICKFRAME | WS_CAPTION;
tagRECT rect;
rect.left = 0;
rect.top = 0;
rect.right = Width;
rect.bottom = Height;
AdjustWindowRect(&rect, window_style, 0);
rect.right -= rect.left;
rect.bottom -= rect.top;
int pos_x = (GetSystemMetrics(SM_CXSCREEN) - rect.right) / 2;
int pos_y = (GetSystemMetrics(SM_CYSCREEN) - rect.bottom) / 2;
SetWindowPos(g_hWnd, HWND_TOP, pos_x, pos_y, rect.right, rect.bottom, /*SWP_NOMOVE | */SWP_SHOWWINDOW | SWP_FRAMECHANGED);
OpenFont();
ClearInput();
}
(https://i.imgur.com/siVfS9G.jpg)
(https://i.imgur.com/U8NGoFp.jpg)
you need to make it recalculate the font height and width
void CUITextInputBox::SetSize(int iWidth, int iHeight)
{
if(iWidth == 0 || iHeight == 0) return;
//if(iWidth == m_iWidth && iHeight == m_iHeight) return;
m_iWidth = iWidth;
m_iHeight = iHeight;
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
HDC hDC = GetDC(m_hParentWnd);
BITMAPINFO * DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = iWidth*g_fScreenRate_x;
DIB_INFO->bmiHeader.biHeight = -(iHeight*g_fScreenRate_y);
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hMemDC = CreateCompatibleDC(hDC);
SelectObject(m_hMemDC, m_hBitmap);
SetFont(g_hFont);
delete [] DIB_INFO;
g_ConsoleDebug->Write(MCD_NORMAL, "HWND:%d", m_hEditWnd);
if(!m_hMemDC || !m_hBitmap)
{
if(m_hEditWnd != NULL)
{
DestroyWindow(m_hEditWnd);
m_hEditWnd = NULL;
}
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
return;
}
if (m_hEditWnd != NULL)
{
SetWindowPos(m_hEditWnd, 0, 0, 0, iWidth*g_fScreenRate_x, iHeight*g_fScreenRate_y, SWP_NOMOVE | SWP_NOZORDER);
SendMessageW(m_hEditWnd, EM_SETSEL, (WPARAM)0, (LPARAM)0);
}
}
bool CUIRenderTextOriginal::Create(HDC hDC)
{
BITMAPINFO* DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[ sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256 ];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = 640*g_fScreenRate_x; //. 640
DIB_INFO->bmiHeader.biHeight = -(480*g_fScreenRate_y); //. 480
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hFontDC = CreateCompatibleDC(hDC);
SelectObject(m_hFontDC, m_hBitmap);
SelectObject(m_hFontDC, g_hFont);
m_dwBackColor = 0; //. Default Background Color;
m_dwTextColor = 0xFFFFFFFF; //. Default Text Color
delete [] DIB_INFO;
if(NULL == m_hFontDC || NULL == m_hBitmap)
{
Release();
return false;
}
return true;
}
@son1xx2
As I understand it, I need to call these functions when the window size changes. It's right?Code: [Select]void CUITextInputBox::SetSize(int iWidth, int iHeight)
{
if(iWidth == 0 || iHeight == 0) return;
//if(iWidth == m_iWidth && iHeight == m_iHeight) return;
m_iWidth = iWidth;
m_iHeight = iHeight;
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
HDC hDC = GetDC(m_hParentWnd);
BITMAPINFO * DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = iWidth*g_fScreenRate_x;
DIB_INFO->bmiHeader.biHeight = -(iHeight*g_fScreenRate_y);
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hMemDC = CreateCompatibleDC(hDC);
SelectObject(m_hMemDC, m_hBitmap);
SetFont(g_hFont);
delete [] DIB_INFO;
g_ConsoleDebug->Write(MCD_NORMAL, "HWND:%d", m_hEditWnd);
if(!m_hMemDC || !m_hBitmap)
{
if(m_hEditWnd != NULL)
{
DestroyWindow(m_hEditWnd);
m_hEditWnd = NULL;
}
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
return;
}
if (m_hEditWnd != NULL)
{
SetWindowPos(m_hEditWnd, 0, 0, 0, iWidth*g_fScreenRate_x, iHeight*g_fScreenRate_y, SWP_NOMOVE | SWP_NOZORDER);
SendMessageW(m_hEditWnd, EM_SETSEL, (WPARAM)0, (LPARAM)0);
}
}
bool CUIRenderTextOriginal::Create(HDC hDC)
{
BITMAPINFO* DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[ sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256 ];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = 640*g_fScreenRate_x; //. 640
DIB_INFO->bmiHeader.biHeight = -(480*g_fScreenRate_y); //. 480
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hFontDC = CreateCompatibleDC(hDC);
SelectObject(m_hFontDC, m_hBitmap);
SelectObject(m_hFontDC, g_hFont);
m_dwBackColor = 0; //. Default Background Color;
m_dwTextColor = 0xFFFFFFFF; //. Default Text Color
delete [] DIB_INFO;
if(NULL == m_hFontDC || NULL == m_hBitmap)
{
Release();
return false;
}
return true;
}
@son1xx2
As I understand it, I need to call these functions when the window size changes. It's right?Code: [Select]void CUITextInputBox::SetSize(int iWidth, int iHeight)
{
if(iWidth == 0 || iHeight == 0) return;
//if(iWidth == m_iWidth && iHeight == m_iHeight) return;
m_iWidth = iWidth;
m_iHeight = iHeight;
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
HDC hDC = GetDC(m_hParentWnd);
BITMAPINFO * DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = iWidth*g_fScreenRate_x;
DIB_INFO->bmiHeader.biHeight = -(iHeight*g_fScreenRate_y);
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hMemDC = CreateCompatibleDC(hDC);
SelectObject(m_hMemDC, m_hBitmap);
SetFont(g_hFont);
delete [] DIB_INFO;
g_ConsoleDebug->Write(MCD_NORMAL, "HWND:%d", m_hEditWnd);
if(!m_hMemDC || !m_hBitmap)
{
if(m_hEditWnd != NULL)
{
DestroyWindow(m_hEditWnd);
m_hEditWnd = NULL;
}
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
return;
}
if (m_hEditWnd != NULL)
{
SetWindowPos(m_hEditWnd, 0, 0, 0, iWidth*g_fScreenRate_x, iHeight*g_fScreenRate_y, SWP_NOMOVE | SWP_NOZORDER);
SendMessageW(m_hEditWnd, EM_SETSEL, (WPARAM)0, (LPARAM)0);
}
}
bool CUIRenderTextOriginal::Create(HDC hDC)
{
BITMAPINFO* DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[ sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256 ];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = 640*g_fScreenRate_x; //. 640
DIB_INFO->bmiHeader.biHeight = -(480*g_fScreenRate_y); //. 480
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hFontDC = CreateCompatibleDC(hDC);
SelectObject(m_hFontDC, m_hBitmap);
SelectObject(m_hFontDC, g_hFont);
m_dwBackColor = 0; //. Default Background Color;
m_dwTextColor = 0xFFFFFFFF; //. Default Text Color
delete [] DIB_INFO;
if(NULL == m_hFontDC || NULL == m_hBitmap)
{
Release();
return false;
}
return true;
}
in Winmain.cpp
switch(WindowWidth)
{
case 640 :FontHeight = 12;break;
case 800 :FontHeight = 13;break;
case 1024:FontHeight = 14;break;
case 1280:FontHeight = 15;break;
}
You will see that the font height is fixed according to the WindowWidth, you need to add the WindowWidth you want to it or have a formula so it can calculate, that's the way I understand it.
case 61:
for (int i = 0; i < 6; i++)
{
int Hand = 0;
if (i >= 3)
Hand = 1;
b->TransformPosition(o->BoneTransform[c->Weapon[Hand].LinkBone], p, Position, true); // ����
Vector(0.f, 0.f, (float)(rand() % 360), Angle);
CreateJoint(BITMAP_JOINT_THUNDER, Position, to->Position, Angle, 2, to, 50.f);
CreateJoint(BITMAP_JOINT_THUNDER, Position, to->Position, Angle, 2, to, 10.f);
}
if (c->AttackTime == 1)
PlayBuffer(SOUND_EVIL);
for (int i = 0; i < 4; i++)
{
int Hand = 0;
if (i >= 2)
Hand = 1;
b->TransformPosition(o->BoneTransform[c->Weapon[Hand].LinkBone], p, Position, true);
Vector(0.f, 0.f, (float)(rand() % 360), Angle);
//CreateJoint(BITMAP_JOINT_LASER + 1, Position, to->Position, Angle, 0, to, 50.f); // dis
CreateParticle(BITMAP_FIRE, Position, o->Angle, o->Light);
}
break;
Bueno... después de una semana con los files pude entender un poco como funciona, paso mi primer aporte y si hay algo que mejorar en el codigo por favor su corrección es bienvenida.Brother, how do you use the final code?
Comando /addpoint sin tener que hacer Switch Character
IN MAIN SOURCES
WSclient.h (yo lo puse abajo de "PRECEIVE_ADD_POINT")Code: [Select]typedef struct {
PBMSG_HEADER Header;
WORD Level;
WORD LevelUpPoint;
DWORD Experience;
DWORD NextExperience;
WORD Strength;
WORD Dexterity;
WORD Vitality;
WORD Energy;
WORD Leadership;
WORD Life;
WORD MaxLife;
WORD Mana;
WORD MaxMana;
WORD BP;
WORD MaxBP;
WORD Shield;
WORD MaxShield;
WORD FruitAddPoint;
WORD MaxFruitAddPoint;
WORD FruitSubPoint;
WORD MaxFruitSubPoint;
//EXTRA
DWORD ViewReset;
DWORD ViewPoint;
DWORD ViewCurHP;
DWORD ViewMaxHP;
DWORD ViewCurMP;
DWORD ViewMaxMP;
DWORD ViewCurBP;
DWORD ViewMaxBP;
DWORD ViewCurSD;
DWORD ViewMaxSD;
DWORD ViewStrength;
DWORD ViewDexterity;
DWORD ViewVitality;
DWORD ViewEnergy;
DWORD ViewLeadership;
} PRECEIVE_ADD_POINT_, * LPPRECEIVE_ADD_POINT_;
WSclient.cpp (Yo lo puse abajo de "void ReceiveAddPoint( BYTE *ReceiveBuffer )")Code: [Select]void ReceiveAddPoint_(BYTE* ReceiveBuffer)
{
LPPRECEIVE_ADD_POINT_ Data = (LPPRECEIVE_ADD_POINT_)ReceiveBuffer;
CharacterAttribute->LevelUpPoint = Data->LevelUpPoint;
CharacterAttribute->Strength = Data->Strength;
CharacterAttribute->Dexterity = Data->Dexterity;
CharacterAttribute->Vitality = Data->Vitality;
CharacterAttribute->LifeMax = Data->MaxLife;
CharacterAttribute->Energy = Data->Energy;
CharacterAttribute->ManaMax = Data->MaxMana;
CharacterAttribute->Charisma = Data->Leadership;
CharacterAttribute->SkillManaMax = Data->MaxBP;
CharacterAttribute->ShieldMax = Data->MaxShield;
CharacterMachine->CalculateAll();
}
WSclient.cpp
TranslateProtocol --> switch( HeadCode ) ---> case 0xF3:
pongan:Code: [Select]case 0x52:
Receive_Master_LevelGetSkill(ReceiveBuffer);
break;"
case 0xE0:
ReceiveAddPoint_(ReceiveBuffer);
break;
Brother, how do you use the final code?Has someone already separated the chat from the system messages?
(https://i.postimg.cc/N2mHZ2YF/Screen-09-17-00-51-0000.jpg) (https://postimg.cc/N2mHZ2YF)Code: [Select]if (MsgType != TYPE_SYSTEM_MESSAGE)
{
CMessageText* pAllMsgText = new CMessageText;
if (!pAllMsgText->Create(strID, strText1, MsgType))
delete pAllMsgText;
else
{
m_vecAllMsgs.push_back(pAllMsgText);
}
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
nScrollLinesNew++;
}else
if( (GetCurrentMsgType() == TYPE_ALL_MESSAGE || GetCurrentMsgType() == MsgType) && MsgType != TYPE_SYSTEM_MESSAGE)
{
nScrollLines++;
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
pvecMsgs = GetMsgs(MsgType);
if (pvecMsgs == NULL)
{
assert(!"Error chat 4");
return;
}
if (nScrollLinesNew > 0 && ((pvecMsgs->size() - (m_iCurrentRenderEndLineMsg + 1) - nScrollLinesNew) < 3))
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
else if (!m_bShowFrame)
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
}
bool SEASON3B::CNewUIChatLogWindow::RenderMessagesNew()
{
float fRenderPosX = m_WndPos.x, fRenderPosY = m_WndPos.y - m_WndSize.cy + SCROLL_TOP_BOTTOM_PART_HEIGHT;
type_vector_msgs* pvecMsgs = GetMsgs(TYPE_SYSTEM_MESSAGE);
if (pvecMsgs == NULL)
{
assert(!"empty chat!");
return false;
}
int iRenderStartLine = 0;
if (GetCurrentRenderEndLineMsg() >= m_nShowingLinesMsg)
{
iRenderStartLine = GetCurrentRenderEndLineMsg() - m_nShowingLinesMsg + 1;
}
else
{
fRenderPosY = fRenderPosY + FONT_LEADING + (SCROLL_MIDDLE_PART_HEIGHT * (m_nShowingLinesMsg - GetCurrentRenderEndLineMsg() - 1));
}
fRenderPosY -= 270;
BYTE byAlpha = 150;
if (m_bShowFrame) byAlpha = 100;
EnableAlphaTest();
for (int i = iRenderStartLine, s = 0; i <= GetCurrentRenderEndLineMsg(); i++, s++)
{
if (i < 0 && i >= (int)pvecMsgs->size()) break;
bool bRenderMessage = true;
g_pRenderText->SetFont(g_hFont);
g_pRenderText->SetBgColor(0, 0, 0, 150);
g_pRenderText->SetTextColor(100, 150, 255, 255);
CMessageText* pMsgText = (*pvecMsgs)[i];
if (bRenderMessage && !pMsgText->GetText().empty())
{
POINT ptRenderPos = { (long)fRenderPosX + (long)WND_LEFT_RIGHT_EDGE, (long)fRenderPosY + (long)FONT_LEADING + ((long)SCROLL_MIDDLE_PART_HEIGHT * (long)s) };
if (!pMsgText->GetID().empty())
{
if (m_bPointedMessage == true && m_iPointedMessageIndex == i)
{
g_pRenderText->SetBgColor(30, 30, 30, 180);
g_pRenderText->SetTextColor(255, 128, 255, 255);
}
std::string strIDUTF8 = "";
g_pMultiLanguage->ConvertANSIToUTF8OrViceVersa(strIDUTF8, (pMsgText->GetID()).c_str());
type_string strLine = strIDUTF8 + " : " + pMsgText->GetText();
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, strLine.c_str());
}
else
{
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, pMsgText->GetText().c_str());
}
}
}
DisableAlphaBlend();
return true;
}
Brother, how do you use the final code?Has someone already separated the chat from the system messages?
(https://i.postimg.cc/N2mHZ2YF/Screen-09-17-00-51-0000.jpg) (https://postimg.cc/N2mHZ2YF)Code: [Select]if (MsgType != TYPE_SYSTEM_MESSAGE)
{
CMessageText* pAllMsgText = new CMessageText;
if (!pAllMsgText->Create(strID, strText1, MsgType))
delete pAllMsgText;
else
{
m_vecAllMsgs.push_back(pAllMsgText);
}
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
nScrollLinesNew++;
}else
if( (GetCurrentMsgType() == TYPE_ALL_MESSAGE || GetCurrentMsgType() == MsgType) && MsgType != TYPE_SYSTEM_MESSAGE)
{
nScrollLines++;
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
pvecMsgs = GetMsgs(MsgType);
if (pvecMsgs == NULL)
{
assert(!"Error chat 4");
return;
}
if (nScrollLinesNew > 0 && ((pvecMsgs->size() - (m_iCurrentRenderEndLineMsg + 1) - nScrollLinesNew) < 3))
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
else if (!m_bShowFrame)
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
}
bool SEASON3B::CNewUIChatLogWindow::RenderMessagesNew()
{
float fRenderPosX = m_WndPos.x, fRenderPosY = m_WndPos.y - m_WndSize.cy + SCROLL_TOP_BOTTOM_PART_HEIGHT;
type_vector_msgs* pvecMsgs = GetMsgs(TYPE_SYSTEM_MESSAGE);
if (pvecMsgs == NULL)
{
assert(!"empty chat!");
return false;
}
int iRenderStartLine = 0;
if (GetCurrentRenderEndLineMsg() >= m_nShowingLinesMsg)
{
iRenderStartLine = GetCurrentRenderEndLineMsg() - m_nShowingLinesMsg + 1;
}
else
{
fRenderPosY = fRenderPosY + FONT_LEADING + (SCROLL_MIDDLE_PART_HEIGHT * (m_nShowingLinesMsg - GetCurrentRenderEndLineMsg() - 1));
}
fRenderPosY -= 270;
BYTE byAlpha = 150;
if (m_bShowFrame) byAlpha = 100;
EnableAlphaTest();
for (int i = iRenderStartLine, s = 0; i <= GetCurrentRenderEndLineMsg(); i++, s++)
{
if (i < 0 && i >= (int)pvecMsgs->size()) break;
bool bRenderMessage = true;
g_pRenderText->SetFont(g_hFont);
g_pRenderText->SetBgColor(0, 0, 0, 150);
g_pRenderText->SetTextColor(100, 150, 255, 255);
CMessageText* pMsgText = (*pvecMsgs)[i];
if (bRenderMessage && !pMsgText->GetText().empty())
{
POINT ptRenderPos = { (long)fRenderPosX + (long)WND_LEFT_RIGHT_EDGE, (long)fRenderPosY + (long)FONT_LEADING + ((long)SCROLL_MIDDLE_PART_HEIGHT * (long)s) };
if (!pMsgText->GetID().empty())
{
if (m_bPointedMessage == true && m_iPointedMessageIndex == i)
{
g_pRenderText->SetBgColor(30, 30, 30, 180);
g_pRenderText->SetTextColor(255, 128, 255, 255);
}
std::string strIDUTF8 = "";
g_pMultiLanguage->ConvertANSIToUTF8OrViceVersa(strIDUTF8, (pMsgText->GetID()).c_str());
type_string strLine = strIDUTF8 + " : " + pMsgText->GetText();
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, strLine.c_str());
}
else
{
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, pMsgText->GetText().c_str());
}
}
}
DisableAlphaBlend();
return true;
}
Thank you very much, brother.Brother, how do you use the final code?Has someone already separated the chat from the system messages?
(https://i.postimg.cc/N2mHZ2YF/Screen-09-17-00-51-0000.jpg) (https://postimg.cc/N2mHZ2YF)Code: [Select]if (MsgType != TYPE_SYSTEM_MESSAGE)
{
CMessageText* pAllMsgText = new CMessageText;
if (!pAllMsgText->Create(strID, strText1, MsgType))
delete pAllMsgText;
else
{
m_vecAllMsgs.push_back(pAllMsgText);
}
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
nScrollLinesNew++;
}else
if( (GetCurrentMsgType() == TYPE_ALL_MESSAGE || GetCurrentMsgType() == MsgType) && MsgType != TYPE_SYSTEM_MESSAGE)
{
nScrollLines++;
}
if (MsgType == TYPE_SYSTEM_MESSAGE)
{
pvecMsgs = GetMsgs(MsgType);
if (pvecMsgs == NULL)
{
assert(!"Error chat 4");
return;
}
if (nScrollLinesNew > 0 && ((pvecMsgs->size() - (m_iCurrentRenderEndLineMsg + 1) - nScrollLinesNew) < 3))
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
else if (!m_bShowFrame)
m_iCurrentRenderEndLineMsg = pvecMsgs->size() - 1;
}
bool SEASON3B::CNewUIChatLogWindow::RenderMessagesNew()
{
float fRenderPosX = m_WndPos.x, fRenderPosY = m_WndPos.y - m_WndSize.cy + SCROLL_TOP_BOTTOM_PART_HEIGHT;
type_vector_msgs* pvecMsgs = GetMsgs(TYPE_SYSTEM_MESSAGE);
if (pvecMsgs == NULL)
{
assert(!"empty chat!");
return false;
}
int iRenderStartLine = 0;
if (GetCurrentRenderEndLineMsg() >= m_nShowingLinesMsg)
{
iRenderStartLine = GetCurrentRenderEndLineMsg() - m_nShowingLinesMsg + 1;
}
else
{
fRenderPosY = fRenderPosY + FONT_LEADING + (SCROLL_MIDDLE_PART_HEIGHT * (m_nShowingLinesMsg - GetCurrentRenderEndLineMsg() - 1));
}
fRenderPosY -= 270;
BYTE byAlpha = 150;
if (m_bShowFrame) byAlpha = 100;
EnableAlphaTest();
for (int i = iRenderStartLine, s = 0; i <= GetCurrentRenderEndLineMsg(); i++, s++)
{
if (i < 0 && i >= (int)pvecMsgs->size()) break;
bool bRenderMessage = true;
g_pRenderText->SetFont(g_hFont);
g_pRenderText->SetBgColor(0, 0, 0, 150);
g_pRenderText->SetTextColor(100, 150, 255, 255);
CMessageText* pMsgText = (*pvecMsgs)[i];
if (bRenderMessage && !pMsgText->GetText().empty())
{
POINT ptRenderPos = { (long)fRenderPosX + (long)WND_LEFT_RIGHT_EDGE, (long)fRenderPosY + (long)FONT_LEADING + ((long)SCROLL_MIDDLE_PART_HEIGHT * (long)s) };
if (!pMsgText->GetID().empty())
{
if (m_bPointedMessage == true && m_iPointedMessageIndex == i)
{
g_pRenderText->SetBgColor(30, 30, 30, 180);
g_pRenderText->SetTextColor(255, 128, 255, 255);
}
std::string strIDUTF8 = "";
g_pMultiLanguage->ConvertANSIToUTF8OrViceVersa(strIDUTF8, (pMsgText->GetID()).c_str());
type_string strLine = strIDUTF8 + " : " + pMsgText->GetText();
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, strLine.c_str());
}
else
{
g_pRenderText->RenderText(ptRenderPos.x, ptRenderPos.y, pMsgText->GetText().c_str());
}
}
}
DisableAlphaBlend();
return true;
}
只用查找关键位置 就可以替换
Gracias por el aporte @louis
Un ejemplo de ello es el txt que lleva los nombres de los npc que se encuentra en la ruta \Data\Local\Eng y lleva por nombre "NpcName_eng" con esto se arregla el problema de que al hablar con la NPC que da buff te desconecta o con la que esta en el bar de lorencia.
te faltaria del 566 hasta el 585
Para cliente S6 Epi3Code: [Select]// MAX : 512
//블러드캐슬
//블러드캐슬1
84 1 "Chief Skeleton Warrior"
85 1 "Chief Skeleton Archer"
86 1 "Dark Skull Soldier"
87 1 "Giant Ogre"
88 1 "Red Skeleton Knight"
89 1 "Magic Skeleton"
//블러드캐슬2
90 1 "Chief Skeleton Warrior"
91 1 "Chief Skeleton Archer"
92 1 "Dark Skull Soldier"
93 1 "Giant Ogre"
94 1 "Red Skeleton Knight"
95 1 "Magic Skeleton"
//블러드캐슬3
96 1 "Chief Skeleton Warrior"
97 1 "Chief Skeleton Archer"
98 1 "Dark Skull Soldier"
99 1 "Giant Ogre"
111 1 "Red Skeleton Knight"
112 1 "Magic Skeleton"
//블러드캐슬4
113 1 "Chief Skeleton Warrior"
114 1 "Chief Skeleton Archer"
115 1 "Dark Skull Soldier"
116 1 "Giant Ogre"
117 1 "Red Skeleton Knight"
118 1 "Magic Skeleton"
//블러드캐슬5
119 1 "Chief Skeleton Warrior"
120 1 "Chief Skeleton Archer"
121 1 "Dark Skull Soldier"
122 1 "Giant Ogre"
123 1 "Red Skeleton Knight"
124 1 "Magic Skeleton"
//블러드캐슬6
125 1 "Chief Skeleton Warrior"
126 1 "Chief Skeleton Archer"
127 1 "Dark Skull Soldier"
128 1 "Giant Ogre"
129 1 "Red Skeleton Knight"
130 1 "Magic Skeleton"
131 1 "Castle Gate"
132 1 "Statue of Saint"
133 1 "Statue of Saint"
134 1 "Statue of Saint"
// 반지의 전쟁
135 1 "White wizard"
136 1 "Destructive ogre soldier"
137 1 "Destructive ogre archer"
//블러드캐슬7
138 1 "Chief Skeleton Warrior"
139 1 "Chief Skeleton Archer"
140 1 "Dark Skull Soldier"
141 1 "Giant Ogre"
142 1 "Red Skeleton Knight"
143 1 "Magic Skeleton"
//칼리마_오후 7:05 2004-08-25
// 1 칼리마
147 1 "Aegis"
148 1 "Rogue Centurion"
146 1 "Blood Soldier"
144 1 "Death Angel"
149 1 "Necron"
145 1 "Death Centurion"
160 1 "Schriker"
161 1 "Illusion of Kundun"
// 2 칼리마
177 1 "Aegis"
178 1 "Rogue Centurion"
176 1 "Blood Soldier"
174 1 "Death Angel"
179 1 "Necron"
175 1 "Death Centurion"
180 1 "Schriker"
181 1 "Illusion of Kundun"
// 3 칼리마
185 1 "Aegis"
186 1 "Rogue Centurion"
184 1 "Blood Soldier"
182 1 "Death Angel"
187 1 "Necron"
183 1 "Death Centurion"
188 1 "Schriker"
189 1 "Illusion of Kundun"
// 4 칼리마
193 1 "Aegis"
194 1 "Rogue Centurion"
192 1 "Blood Soldier"
190 1 "Death Angel"
195 1 "Necron"
191 1 "Death Centurion"
196 1 "Schriker"
197 1 "Illusion of Kundun"
//카오스캐슬 몬스터.
162 1 "Chaos Castle 1"
163 1 "Chaos Castle 2"
164 1 "Chaos Castle 3"
165 1 "Chaos Castle 4"
166 1 "Chaos Castle 5"
167 1 "Chaos Castle 6"
168 1 "Chaos Castle 7"
169 1 "Chaos Castle 8"
170 1 "Chaos Castle 9"
171 1 "Chaos Castle 10"
172 1 "Chaos Castle 11"
173 1 "Chaos Castle 12"
83 1 "Golden Wheel"
82 1 "Golden Tantalos"
81 1 "Golden Vepar"
80 1 "Golden Lizard King"
79 1 "Golden Derkon"
78 1 "Golden Goblin"
77 1 "Phoenix of Darkness"
76 1 "Phoenix Darkness shield"
75 1 "Great Drakan"
74 1 "Alpha Crust"
73 1 "Drakan"
72 1 "Phantom Knight"
71 1 "Mega Crust"
70 1 "Queen Rainier"
69 1 "Alquamos"
68 1 "Molt"
57 1 "Iron Wheel"
58 1 "Tantalos"
59 1 "Zaikan"
60 1 "Bloody wolf"
61 1 "Beam Knight"
62 1 "Mutant"
63 1 "Death Beam Knight"
64 1 "Ogre archer"
65 1 "Elite Ogre"
66 1 "Cursed king"
67 1 "Metal Balrog"
36 1 "Shadow"
39 1 "Poison Shadow"
34 1 "Cursed Wizard"
41 1 "Death Cow"
37 1 "Devil"
40 1 "Death Knight"
35 1 "Death Gorgon"
38 1 "Balrog"
3 1 "Spider"
26 1 "Goblin"
2 1 "Budge Dragon"
27 1 "Chain Scorpion"
0 1 "Bull Fighter"
33 1 "Elite Goblin"
1 1 "Hound"
28 1 "Beetle Monster"
4 1 "Elite Bull Fighter"
29 1 "Hunter"
6 1 "LIch"
30 1 "Forest Monster"
31 1 "Agon"
7 1 "Giant"
32 1 "Stone Golem"
14 1 "Skeleton"
24 1 "Worm"
22 1 "Ice Monster"
23 1 "Hommerd"
12 1 "Larva"
21 1 "Assassin"
17 1 "Cyclops"
19 1 "Yeti"
11 1 "Ghost"
15 1 "Skeleton Archer"
20 1 "Elite Yeti"
5 1 "Hell Hound"
13 1 "Hell Spider"
16 1 "Chief Skeleton Warrior"
9 1 "Thunder Lich"
8 1 "Poison Bull Fighter"
10 1 "Dark Knight"
25 1 "Ice Queen"
18 1 "Gorgon"
45 1 "Bahamut"
46 1 "Vepar"
47 1 "Valkyrie"
48 1 "Lizard King"
49 1 "Hydra"
50 1 "Sea Worm"
51 1 "Great Bahamut"
52 1 "Silver Valkyrie"
43 1 "Golden Budge Dragon"
44 1 "Dragon"
53 1 "Golden Titan"
54 1 "Golden Soldier"
55 1 "Death King"
56 1 "Death Bone"
150 1 "Bali"
151 1 "Soldier"
152 1 "Magic stone of %s "
153 1 "Magic stone of %s "
154 1 "Magic stone of %s "
155 1 "Magic stone of %s "
156 1 "Magic stone of %s "
157 1 "Magic stone of %s "
158 1 "Magic stone of %s "
//158 1 "Shadow Knight" '- 쉐도우나이트라는 몹이 없으므로
// 함정 ( 100 ~ 110 )
100 1 "Lance"
101 1 "Iron Stick"
102 1 "Fire"
103 1 "Meteorite"
// 공성트랩.
104 1 "Trap"
105 1 "Canon Trap"
106 1 "Laser Trap"
200 1 "Soccer Ball"
// 크라이울프 레이드 MVP (2005.9.23 이혁재 추가)
204 1 "Wolf Status"
205 1 "Wolf Altar1"
206 1 "Wolf Altar2"
207 1 "Wolf Altar3"
208 1 "Wolf Altar4"
209 1 "Wolf Altar5"
215 1 "Shield"
// 공성
216 1 "Crown"
217 1 "Crown Switch2"
218 1 "Crown Switch1"
219 1 "Castle Gate Switch"
220 1 "Gatekeeper"
221 1 "Slingshot attack"
222 1 "Slingshot defense"
//NPC
223 1 "Senior"
224 1 "Guardsman"
226 1 "Trainer"
//227 1 "McDonalds"
//228 1 "Popeyes"
229 1 "Marlon"
230 1 "Wandering Merchant Alex"
231 1 "Thompson Kenel"
232 1 "Archangel"
233 1 "Messenger of Archangel"
234 1 "Pet Trainer"
235 1 "Sebina the Priest"
236 1 "Golden Archer"
237 1 "Charon"
238 1 "Chaos Goblin"
239 1 "Arena Guard"
240 1 "Safety Guardian"
241 1 "Royal Guard Captain Lorence"
242 1 "Elf Lala"
243 1 "Eo the Craftsman"
244 1 "Caren the Barmaid"
245 1 "Wizard Izabel"
246 1 "Weapons Merchant Zienna"
247 1 "Guard"
248 1 "Wandering Merchant Martin"
249 1 "Guard"
250 1 "Wandering Merchant"
251 1 "Hanzo the Blacksmith"
252 1 ""
253 1 "Potion Girl Amy"
254 1 "Pasi the Mage"
255 1 "Lumen the Barmaid"
256 1 "Lahap"
257 1 "Shadow Phantom Soldier"
//칼리마 몬스터
// 5 칼리마
263 1 "Aegis"
264 1 "Rogue Centurion"
262 1 "Blood Soldier"
260 1 "Death Angel"
265 1 "Necron"
261 1 "Death Centurion"
266 1 "Schriker"
267 1 "Illusion of Kundun"
// 6 칼리마
271 1 "Aegis"
272 1 "Rogue Centurion"
270 1 "Blood Soldier"
268 1 "Death Angel"
273 1 "Necron"
269 1 "Death Centurion"
274 1 "Schriker"
275 1 "Kundun"
// 공성전 몬스터.
277 1 "Castle Gate"
278 1 "Life Stone"
283 1 "Guardian Statue"
285 1 "Guardian"
286 1 "Archer"
287 1 "Spearman"
288 1 "Canon Tower"
//시련의 땅
290 1 "Lizard Warrior"
291 1 "Fire Golem"
292 1 "Queen Bee"
293 1 "Poison Golem"
294 1 "Ax Warrior"
295 1 "Erohim"
296 1 "Monster7"
// 로랜협곡이벤트 몬스터.
300 1 "Hero Mutant"
301 1 "Omega Wing"
302 1 "Axl Hero"
303 1 "Gigas Golem"
//아이다. 크라이울프. 잃어버린 칼리마 추가 작업_기획/정동일 (오후 3:18 2005-07-26)
//아이다 몬스터
308 1 "Death Tree"
307 1 "Forest Orc"
306 1 "Death Rider"
305 1 "Blue Golem"
304 1 "Witch Queen"
309 1 "Hell Maine"
//크라이울프
310 1 "Hammer Scout"
311 1 "Lance Scout"
312 1 "Bow Scout"
313 1 "Werewolf"
314 1 "Scout(Hero)"
315 1 "Werewolf(Hero)"
316 1 "Balram"
317 1 "Soram"
// 크라이울프 MVP 몬스터 - 추가 2005.11.23 (이혁재)
340 1 "Dark Elf"
341 1 "Soram"
344 1 "Balram"
345 1 "Death spirit"
348 1 "Tanker"
349 1 "Balgass" //MVP 보스
//잃어버린 칼리마
331 1 "Aegis"
332 1 "Rogue Centurion"
333 1 "Blood Soldier"
334 1 "Death Angel"
335 1 "Necron"
336 1 "Death Centurion"
337 1 "Schriker"
338 1 "Illusion of Kundun" //제 6칼리마 위치
// 크라이울프 요새 맵 상인 _ 8월 8일 ( 오승언 ) : 크라이울프 요새 조련사 및 세르비스 몹 번호 수정
// 아래 2 NPC는 추후 추가
// 팻 시스템 이후 등록
//344 1 "Summoner"
// 노리아의 조합 고블린과 동일. 조합 수정한 이후 배치 ( 현시점에서는 추가 금지 )
//345 1 "Chaos Goblin"
//이벤트 전용 NPC 추가 - 2006.1.23 (이민정)
258 1 "Luke the Helper"
//2006.4.17 추가 (이민정)
259 1 "Oracle Layla"
//칸투르 몬스터 추가 - 2006.5.16 (김보경)
350 1 "Berserker"
351 1 "Splinter Wolf"
352 1 "Iron Rider"
353 1 "Satyros"
354 1 "Blade Hunter"
355 1 "Kentauros"
356 1 "Gigantis"
357 1 "Genocider"
358 1 "Persona"
359 1 "Twin Tale"
360 1 "Dreadfear"
361 1 "Nightmare"
362 1 "Maya Hand"
363 1 "Maya Hand"
364 1 "Maya"
//칸투르 npc
367 1 "Gateway Machine"
368 1 "Elpis"
//조화의 보석 관련 npc
369 1 "Osbourne"
370 1 "Jerridon"
//화이트엔젤 이벤트 아이템 지급 NPC 추가 - 2006.8.23 이민정
371 1 "Leo the Helper"
//엘리트해골전사변신반지 NPC 추가 - 2006.9.5 이민정
372 1 "Elite Skull Soldier"
//할로윈이벤트 NPC 추가 - 2006.9.12 이민정
373 1 "Jack Olantern"
//크리스마스 변신반지용 NPC 추가 - 2006.11.30 이민정
374 1 "Santa"
// 카오스카드 담당
375 1 "Chaos Card Master"
// 공성전 신규 물약 NPC - 2007.1.22 김보경
376 1 "Pamela the Supplier"
377 1 "Angela the Supplier"
// 설날 복주머니 이름
365 1 "Pouch of Blessing"
378 1 "GameMaster"
379 1 "Natasha the Firecracker Merchant"
//신규 이벤트맵
380 1 "Stone Statue"
381 1 "MU Allies General"
382 1 "Illusion Sorcerer Elder"
383 1 "Alliance Sacred Item Storage"
384 1 "Illusion Castle Sacred Item Storage"
385 1 "Mirage"
// 신규 이벤트맵 1 (레벨 220~270)
386 1 "Illusion Sorcerer Spirit"
387 1 "Illusion Sorcerer Spirit"
388 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 2 (레벨 271~320)
389 1 "Illusion Sorcerer Spirit"
390 1 "Illusion Sorcerer Spirit"
391 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 3 (레벨 321~350)
392 1 "Illusion Sorcerer Spirit"
393 1 "Illusion Sorcerer Spirit"
394 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 4 (레벨 351~380)
395 1 "Illusion Sorcerer Spirit"
396 1 "Illusion Sorcerer Spirit"
397 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 5 (레벨 381~399)
398 1 "Illusion Sorcerer Spirit"
399 1 "Illusion Sorcerer Spirit"
400 1 "Illusion Sorcerer Spirit"
// 신규 이벤트맵 6 (레벨 400)
401 1 "Illusion Sorcerer Spirit"
402 1 "Illusion Sorcerer Spirit"
403 1 "Illusion Sorcerer Spirit"
// 이벤트맵 캐릭터 변신용 인덱스
404 1 "MU Allies"
405 1 "Illusion Sorcerer"
// 3차 체인지업
406 1 "Apostle Devin"
407 1 "Werewolf Quarel"
408 1 "Gatekeeper"
409 1 "Balram (Trainee Soldier)"
410 1 "Death Spirit (Trainee Soldier)"
411 1 "Soram (Trainee Soldier)"
412 1 "Dark Elf (Trainee Soldier)"
// 추석(2007)이벤트
413 1 "Lunar Rabbit"
414 1 "Helper Ellen"
// 엘베란드 NPC
415 1 "Silvia"
416 1 "Rhea"
417 1 "Marce"
// 엘베란드 사냥터 (2007-09-18 김현지)
418 1 "Strange Rabbit"
419 1 "Hideous Rabbit"
420 1 "Werewolf"
421 1 "Polluted Butterfly"
422 1 "Cursed Lich"
423 1 "Totem Golem"
424 1 "Grizzly"
425 1 "Captain Grizzly"
// 이벤트맵 등급 추가로 인한 몬스터 추가(2007.10.16)
//카오스캐슬7_확장
426 1 "Chaos Castle13"
427 1 "Chaos Castle14"
//블러드캐슬8_확장
428 1 "Chief Skeleton Warrior"
429 1 "Chief Skeleton Archer"
430 1 "Dark Skull Soldier"
431 1 "Giant Ogre"
432 1 "Red Skeleton Knight"
433 1 "Magic Skeleton"
//악마의광장7_확장
434 1 "Gigantis"
435 1 "Berserker"
436 1 "Balram (Trainee Soldier)"
437 1 "Soram (Trainee Soldier)"
438 1 "Persona"
439 1 "Dreadfear"
440 1 "Dark Elf"
// 평온의 늪 몬스터 추가
441 1 "Sapi-Unus"
442 1 "Sapi-Duo"
443 1 "Sapi-Tres"
444 1 "Shadow Pawn"
445 1 "Shadow Knight"
446 1 "Shadow Look"
447 1 "Thunder Napin"
448 1 "Ghost Napin"
449 1 "Blaze Napin"
// 벚꽃이벤트 npc 추가
450 1 "Cherry Blossom Spirit"
451 1 "Cherry Blossom Tree"
// 소켓 시스템 NPC
452 1 "Seed Master"
453 1 "Seed Researcher"
// 라클리온 몬스터 추가
454 1 "Ice Walker"
455 1 "Giant Mammoth"
456 1 "Ice Giant"
457 1 "Coolutin"
458 1 "Iron Knight"
459 1 "Selupan"
460 1 "Spider Eggs"
461 1 "Spider Eggs"
462 1 "Spider Eggs"
// 불꽃주머니 추가
463 1 "Fire Flame Ghost"
// 체험서버용 NPC 추가
//464 1 "Re-Initialization Helper"
// 상용화 7주년 이벤트 NPC 추가
478 1 "Delgado"
// 크리스마스이벤트 NPC 추가(국내 적용 추가)
465 1 "Santa Claus"
466 1 "Cursed Goblin"
467 1 "Snowman"
468 1 "Dasher"
469 1 "Kermit"
470 1 "Little Santa"
471 1 "Cupid"
472 1 "Prancer"
473 1 "Donner"
474 1 "Vixen"
475 1 "Blitzen"
476 1 "Cursed Santa"
477 1 "Transformed Snowman"
// PK필드 몬스터 NPC 추가
479 1 "Doorkeeper Titus"
480 1 "Zombie Fighter"
481 1 "Zombie Fighter"
482 1 "Resurrected Gladiator"
483 1 "Resurrected Gladiator"
484 1 "Ash Slaughterer"
485 1 "Ash Slaughterer"
486 1 "Blood Assassin"
487 1 "Cruel Blood Assassin"
488 1 "Cruel Blood Assassin"
489 1 "Burning Lava Giant"
490 1 "Ruthless Lava Giant"
491 1 "Ruthless Lava Giant"
// 겜블 NPC 추가
492 1 "Moss"
// 황금군단이벤트(일본)
502 1 "Golden Rabbit"
493 1 "Golden Dark Knight"
494 1 "Golden Devil"
495 1 "Golden Stone Golem"
496 1 "Golden Crust"
497 1 "Golden Satyros"
498 1 "Golden Twin Tail"
499 1 "Golden Iron Knight"
500 1 "Golden Napin"
501 1 "Great Golden Dragon"
// 5월 프리미엄 아이템 (팬더변신반지)
503 1 "Transformed Panda"
// 제국 수호군 몬스터 NPC 추가
// 몬스터
504 1 "Gaion Kharein"
// 맵 보스
505 1 "Jerint"
506 1 "Raymond"
507 1 "Erkanne"
508 1 "Destler"
509 1 "Vermont"
510 1 "Kato"
511 1 "Galia"
// 존 보스
512 1 "Quartermaster"
513 1 "Combat Instructor"
514 1 "Knight Commander"
515 1 "Grand Wizard"
516 1 "Master Assassin"
517 1 "Cavalry Captain"
// 일반 몬스터
518 1 "Shield Bearer"
519 1 "Medic"
520 1 "Knights"
521 1 "Bodyguard"
// NPC
522 1 "Jerint the Assistant"
// 오브젝트 NPC
523 1 "Trap"
524 1 "Castle Gate 1" //내려가는 성문(평일)
525 1 "Castle Gate 2" //파괴되는 성문(평일)
526 1 "Stone Statue 1"
527 1 "Castle Gate 3" //내려가는 성문(주말)
528 1 "Castle Gate 4" //파괴되는 성문(주말)
// 도플갱어 몬스터 NPC 추가
// 몬스터
// 보스 몬스터
529 1 "Furious Slaughterer"
530 1 "Slaughterer"
// 미션 몬스터
531 1 "Ice Walker"
// 일반 몬스터
532 1 "Larva"
533 1 "Doppelganger"
534 1 "Doppelganger Elf"
535 1 "Doppelganger Knight"
536 1 "Doppelganger Wizard"
537 1 "Doppelganger Magic Gladiator"
538 1 "Doppelganger Dark Lord"
539 1 "Doppelganger Summoner"
// NPC
540 1 "Lugard"
541 1 "Interim Reward Chest"
542 1 "Final Reward Chest"
// 겐스 NPC
543 1 "Gens Duprian Steward"
544 1 "Gens Vanert Steward"
//로랜시장 NPC 추가 2009.11.24 홍승욱
545 1 "Christine the General Goods Merchant"
546 1 "Jeweler Raul"
547 1 "Market Union Member Julia"
//스켈레톤변신반지용 변신스켈레톤 추가
548 1 "Transformed Skeleton"
549 1 "Bloody Orc"
550 1 "Bloody Death Rider"
551 1 "Bloody Golem"
552 1 "Bloody Witch Queen"
553 1 "Berserker Warrior"
554 1 "Kentauros Warrior"
555 1 "Gigantis Warrior"
556 1 "Genocider Warrior"
557 1 "Sapi Queen"
558 1 "Ice Napin"
559 1 "Shadow Master"
560 1 "Sapi Queen"
561 1 "Medusa"
562 1 "Dark Mammoth"
563 1 "Dark Giant"
564 1 "Dark Coolutin"
565 1 "Dark Iron Knight"
566 1 "Mercenary Guild Manager Tercia"
567 1 "Priestess Veina"
568 1 "Wandering Merchant Zyro"
// 칼루탄 몬스터 추가 2010-06-30 홍승욱
569 1 "Venomous Chain Scorpion"
570 1 "Bone Scorpion"
571 1 "Orcus"
572 1 "Gollock"
573 1 "Crypta"
574 1 "Crypos"
575 1 "Condra"
576 1 "Narcondra"
// 칼루탄 NPC 추가 2010-06-30 홍승욱
577 1 "Leina the General Goods Merchant"
578 1 "Weapons Merchant Bolo"
// 럭키아이템 NPC 추가 2010-09-01 이기수
579 1 "David"
585 1 "Scarecrow"
end
Sería más fácil si usan mi kayito Tools, abren el Monster.txt del muserver y exportan el NPCName(Eng).txt desde ahí directamente. De esa forma les queda sincronizado con los monsters del server :)
En kayito Tools tienen que ir a la opción MONSTER.
can you share src main.dll getmaininfo ? thanks broEstá faltando a source do GetMainInfo drogado.
al parecer alguien no entendio que es esto. este es el main.exe original de webzen no usa ningun getmain de xteam. no tienes que cambiar nada ya que lo puedes hacer desde la source directamente, solo busca el string de la ip y cambiala por la tuya
no necesariamente puedes armar el GetMain de muemu y manajer las cosas con mas facilidad, tampoco es complicado hacerlo, querer es poder xD
(https://i.postimg.cc/BnTNPgF3/Sin-t-tulo.png)
(https://i.postimg.cc/Nf3Bjg6V/Screen-01-25-19-52-0000.jpg)
Visual Studio 2022
Fixes:
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
Visual Studio 2022
Fixes:
- Fixing various bugs
- Performance improvement
- Organized media files
- Better chunk loading
- Starting to encode preload opening video
Thank you soo much, you make such a lot of work, how did you make it alone ?
...add some spaces and rename data\\music\\ to Media\\music
definitely worth to add the github credit
BẠN ƠI UP LẠI LINK CHO MÌNH XIN VỚIPlease share Source with RF included. When I turn on #define RF the client closes at the end of the download, if I start debugging through VS it gives an error EnсhTerrain74.obj and the client closes.
Source client + client RF (Global Debug folder)
RF + set Phoenix, doesn't make Phoenix Shot skill yet.
https://mega.nz/file/lGAClD5B#EXrZJ89FUxY2bj_h6mpa4t5m_A2EEQERZaBUWdR_sR8
GS:
ông fix các file nào ông có thể bóc code ra đc ko ông @_@ chứ ông gửi về build lại chạy mấy file ko được
stdafx.h add:Code: [Select]#ifndef GAMESERVER_SEASON
#define GAMESERVER_SEASON "CUSTOM"
#endif // !GAMESERVER_SEASON
(https://upanh.tv/image/dlxVHE)
BÁC UP LẠI LINK E XIN VOI ẠPlease share Source with RF included. When I turn on #define RF the client closes at the end of the download, if I start debugging through VS it gives an error EnсhTerrain74.obj and the client closes.
Source client + client RF (Global Debug folder)
RF + set Phoenix, doesn't make Phoenix Shot skill yet.
https://mega.nz/file/lGAClD5B#EXrZJ89FUxY2bj_h6mpa4t5m_A2EEQERZaBUWdR_sR8
GS:
stdafx.h add:Code: [Select]#ifndef GAMESERVER_SEASON
#define GAMESERVER_SEASON "CUSTOM"
#endif // !GAMESERVER_SEASON
(https://upanh.tv/image/dlxVHE)