Jump to content

caanmasu

Miembro
  • Contador contenido

    357
  • Ingreso

  • Última visita

  • Días ganados

    38

Mensajes publicados por caanmasu

  1. hace 16 horas, zhas77 dijo:

    Estaría genial si ya que estas, podrías sacar las armaduras, y los objetos para la fabricación y mejora. Aquí te dejo mi mg. 😉

    Eso implicaría meter todo el sistema.

    Tanto los ítems de mejora, que se dropean del la dung Templo Serpentino y Mazmorra Misteriosa, que están en el mapa Pase de Yilad. Van 3 mapas.

    Hay que tener el sistema de Yohara, que no están difícil, por ahí está público.

    Implicaría meter el cube, que ya lo tenemos. También meter los NPCs y mobs de ese mapa. El del crafteo es la Estatua Serpiente.

    Como los ítems para crear las armas solo se dropean en dung, habría que meter las quest. Los textos de las quest los tenemos pero falta crear la quest xD

    Lo mismo ocurre con las armaduras.

    Es largo la verdad pero vale completamente la pena, se puede hacer.

  2. hace 4 horas, Break dijo:

    La función que no tenías:

     

    
    	ALUA(pc_is_engaged_or_married)
    	{
    		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
    		lua_pushboolean(L, marriage::CManager::instance().IsEngagedOrMarried(ch->GetPlayerID()));
    		return 1;
    	}

     

    Un saludo.

    Sí, correcto.

    #marriage.cpp
    
    	bool CManager::IsEngagedOrMarried(DWORD dwPlayerID) 
    	{ 
    		return Get(dwPlayerID) != NULL; 
    	}

     

     

    hace 1 hora, Johan™ dijo:

    Los TRUE y FALSE, son una definición de los true  y false

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    libthecore\include\stdafx.h

    Varias funciones del SRC utilizan estos TRUE y FALSE, ¿porque? quien sabe, se podría eliminar el contenido de la foto, solo tendrías que editar los TRUE y FALSE

    En mis files va perfecto esa parte. Revisé otros files que daban problema por eso. Seguro no tenían esa definición.
    Gracias por el aporte.

  3. No es por echarle nada malo a nadie ni nada, al contrario, siempre motivo a la gente.

     

    Casi todos se dejan llevar por los colores y las cosas metidas en el juego como los sistemas. Pero no creo que un vendedor de files te vaya a dar documentación de los errores y vulnerabilidades que hay.

    Mostrar los errores no vende, por eso nadie los pone, pero es necesario. Apenas abres el sv ya estás hackeado muy fácilmente, incluso sin usar programas externos.

    Si hubiese una persona que vendiera sus files y anexara los errores que tiene, daría más confianza. De resto no confiaría en nadie, a menos que fueran limpios y los trabajara desde la base (Marty Sama), que aunque hay errores, ya uno sabe cuáles son. Esa es la razón por la que mucha gente prefiere usar Marty y luego meterle los sistemas uno a uno.

     

    Lo digo porque trabajo con unos files con un montón de sistemas metidos y he tenido que romperme la madre buscando los errores.

    Si algún día fuera a vender mi base ya trabajada, solo el documento de errores reportados valdría muchos más $$. Qué buena! xD porque le ahorraría mucho trabajo a la persona que lo compre porque ya sabría qué cosas arreglar.

     

    Si dices que tus files no tienes errores, es porque aún te falta mucho, pero vamos!

     

    No puedo contar por aquí detalles sobre errores y vulnerabilidades porque son internos aquí en mi equipo.

    De todas maneras les deseo lo mejor y nunca dejen de aprender.

     

  4. void CActorInstance::__HitGreate(CActorInstance& rVictim)
    {

    Cuando un actor del juego (puerta, metin, personaje, mob, construccion, etc) recibe un "golpe bien dado"

    Llámese golpe bien dado a los golpes básicos que generan empuje (golpes de caballo o el último golpe de un combo).

    El parámetro que llega es el actor que recibe el golpe.

     

        if (IS_HUGE_RACE(rVictim.GetRace()))
        {
            return;
        }

    IS_HUGE_RACE es una función que sirve como una bandera, que clasifica a los monstruos como "raza enorme", llámese mobs en el mob_proto que tienen rank 4 (jefe) o mayor.

    Aquí pregunta que si el actor que recibe daño es un jefe, entonces no ejecutará las siguientes líneas de un "golpe bien dado".

    PD: no es necesario poner los vnum de los jefes en este bloque porque IS_HUGE_RACE ya los clasifica.

     

    Si un personaje jugador recibe el golpe, por supuesto que va a ser empujado porque un personaje no es un jefe mob. Y los jefes no empujan con golpes básicos.

     

    Esto no funciona para habilidades. Si se fijan en los enum:

    	enum EHitType
    	{
    		HIT_TYPE_NONE,
    		HIT_TYPE_GREAT,
    		HIT_TYPE_GOOD,
    	};

    Solo existen dos tipos de golpe. Ese none es que es no identificado y pues dará error.

    Los otros dos son el golpe bueno (normal) y el "golpe bien dado" (que empuja).

    Ya si van a poner lo de que no empuje cuando pegue el jefe una skill, creo que el enum es este:

    	enum EAttackType
    	{
    		ATTACK_TYPE_SPLASH,
    		ATTACK_TYPE_SNIPE,
    	};

    No estoy muy seguro si splash es aplastar y snipe es como "tipo francotirador" :v supongo que golpes lejanos

     

    Sería probar entrando a la función:

    void CActorInstance::__ProcessDataAttackSuccess

    y comentar la línea:

    __PushCircle(rVictim);

    para ver si vuelve a empujar.

     

    Porque la función es así:

    void CActorInstance::__PushCircle(CActorInstance & rVictim)
    {
    	const TPixelPosition& c_rkPPosAtk=NEW_GetAtkPixelPositionRef();
    
    	D3DXVECTOR3 v3SrcPos(c_rkPPosAtk.x, -c_rkPPosAtk.y, c_rkPPosAtk.z);
    
    	const D3DXVECTOR3& c_rv3SrcPos = v3SrcPos;
    	const D3DXVECTOR3& c_rv3DstPos = rVictim.GetPosition();
    
    	D3DXVECTOR3 v3Direction;
    	v3Direction.x = c_rv3DstPos.x - c_rv3SrcPos.x;
    	v3Direction.y = c_rv3DstPos.y - c_rv3SrcPos.y;
    	v3Direction.z = 0.0f;
    	D3DXVec3Normalize(&v3Direction, &v3Direction);
    
    	rVictim.__SetFallingDirection(v3Direction.x, v3Direction.y);
    }

    Me parece que esto hace el personaje se desplace al realizar el golpe y de una vez lo derriba.

     

    No sé si esté equivocado en alguna parte, me puse a investigar un rato.

  5. En 24/9/2021 a las 18:54, Loraine Evool dijo:

    cannot open borrar.sh: No such file or directory

    😐 Alguna idéa?

    Edit : ya pude, tener en cuenta que despues de hacer el proceso el archivo borrar.sh se borra de la carpeta... tenerlo siempre a la mano para subirlo de nuevo es buena opcion.

    Si haces un make.sh o compilas todas las quest de nuevo lo más probable es que se borre toda la carpeta object y se cree una nueva y ya el archivo de borrar no esté

  6. hace 2 horas, wille damare dijo:

    Alguien sabe por qué cuando entro a la mazmorra de cristal cumpliendo todos los requisitos igual me saca y elimina el grupo que cree para entrar  osea entra en grupo y al instante te saca a city y el grupo eliminado.

    Adjunta la quest y dime la versión de tu archivo game

  7. hace 1 hora, guba dijo:

    No veas lo útil que es esto, con el tiempo que tarde yo a traducir unos files turcos a mano t.t 

    para el tema de la codificación probaste de añadir encoding='cp1252' en la función open? algo así open(path, encoding='cp1252')

    según la documentación de Python esto debería funcionar aun que yo no he trabajado nunca con Python.

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Y por el tema de las variables podrías solucionar las mas típicas con un replace() haciendo algo así:

    
    lines_translate.replace("% D", "%d").replace("% U", "%U").replace("% S", "%S").replace("% Lld", "%lld")

    O si el locale_string no es Keysensitive simplemente así:

    lines_translate.replace("% ", "%")

    si fuera otro lenguaje podría intentar hacer algo mas complejo pero como dije no he trabajado nunca con Python y lo tendría que buscar. 

    Claro que lo intenté pero siguió igual. Antes me funcionaba pero ni idea de qué pasó xD

    Uff lo del reemplazo no es así nada más, te explico:

    Hay textos así "texto %d texto" y la traducción queda así "texto% D texto"

    "%s texto" -> "% S texto"

    "%u texto" -> "% u texto"

    "texto %lld" -> "texto % Lld"

    etc

    y son muchas variables, como u, s, d, ld, lld, lu, etc.

     

     

  8. Al final cuando el pj reciba sus habilidades pones abajo

    table.foreachi(special.active_skill_list[pc.get_job()+1][pc.get_skill_group()],function(r,skill) pc.set_skill_level(skill,59) end)

    pero debes asegurarte que tengas la 6° habilidad puesta en el questlib

    special.active_skill_list = {
        {
            { 1, 2, 3, 4, 5, 6}, //Guerrero corporal
            { 16, 17, 18, 19, 20, 21}, //mental
        },
        {
            {31, 32, 33, 34, 35, 36},
            {46, 47, 48, 49, 50, 51},
        },
        {
            {61, 62, 63, 64, 65, 66},
            {76, 77, 78, 79, 80, 81},
        },
        {
            {91, 92, 93, 94, 95, 96},
            {106, 107, 108, 109, 110, 111},
        },
    	{
            {170, 171, 172, 173, 174, 175}, //lícano
        },
    }

     

  9. Hacerla no es tan difícil, el problema es que es muy fácil aprovecharse del farmeo de puntos. Van a crear muchos pjs y contratar personas solo para matarlos y así cumplir con la meta.

    Por eso esas misiones de matar personajes no las ponen

    Y si lo hacen, las ponen con muchas restricciones como IP, niveles altos, al matar el pj de nuevo solo cuenta punto si lo matas al otro día, etc.

×
×
  • Crear nuevo...