Jump to content

PACI

Miembro
  • Contador contenido

    501
  • Ingreso

  • Última visita

  • Días ganados

    58

Mensajes publicados por PACI

  1. Hola.
    He decidido desarrollar esta nueva dungeon que saldrá en los oficiales, y que nos fue posible probar en el servidor Beta de Metin2.
     
    Se trata de una dungeon que incluye dos mapas, un laberinto, y un bosque (o como dicen otros, Mushroom Map). Ambos mapas están conectados para completar la tarea final.

     

    Aquí el video:

     

     

    Al efectuar la compra, incluye:

    • Mapas (cliente y servidor);
    • Mobs (cliente y servidor [sin status oficial]);
    • Quest;
    • Regen;
    • Modificaciones del Source. 

    Actualmente la dungeon posee la siguiente estructura:

    • El En-Tai Guardian es invocado cuando se mata al Ochao Bodyguard, e sale en unas coordenadas aleatorias.
    • El Portal de entrada al Bosque tiene X minutos de spawn (por defecto, 1). Después de ese tiempo, desaparece;
    • Se necesita un Grupo de Y miembros para entrar (por defecto 5, se puede remover esta comprobación, tal como se hizo en el vídeo);
    • Todos los miembros del Grupo deben poseer un item de entrada (se puede remover esta comprobación);
    • Cuando se sale de la dungeon, hay un delay de Z minutos/horas para volver a entrar (se puede quitar, editar);
    • Si se desconecta dentro de la dungeon y el grupo sigue en ella, el jugador puede volver a unirse a los compañeros (dura 5 minutos);
    • Los Ochao Healers ahora curan al Jotun Thrym (sin efecto, todavía).

    Esta desarrollado de la manera más cercana al oficial posible (por que he probado yo mismo la dungeon en el Beta).
     
    El precio base es de 60€ (euros), y el método de pago es Paypal.
    Interesados contactadme por MP.
     
    Saludos.

  2. puedes probar asi

     

    when 30093.use or 30094.use or 30095.use or 30096.use begin
    	local reward = {
    		[30093] = {19, 1, 29, 1, 39, 1},
    		[30094] = {19, 1, 29, 1, 39, 1},
    		[30095] = {19, 1},
    		[30096] = {19, 1, 29, 1, 39, 1, 49, 1},
    	}
    	local curBox = reward[item.get_vnum()] or nil
    
    	if not curBox then return end
    
    	local prob = number(1, table.getn(curBox))
    	while prob%2 == 0 then
    		prob = number(1, table.getn(curBox))
    	end
    	pc.give_item2(curBox[prob], curBox[prob+1])
    	item.remove()
    end
  3. hola, hice esta func rapidamente en lua con las funciones q dice shang, puedes probarla

     

    --[[
    	Author: PACI
    	Description: Creates an item with selected item attributes and sockets.
    	Returns two args: boolean, int
    	Syntax:
    		Example 1 - Without item count (default 1):
    			local item_created, errorType = create_item(19)
    
    			if item_created then
    				syschat("Item given to the player succesfully")
    			else
    				syschat("Something wrong happend, errorType is: "..errorType)
    			end
    
    			>> Gives the player an item with the vnum 19.
    
    		Example 2 - Without attributes nor sockets:
    			local item_created, errorType = create_item(19, 1)
    			if item_created then
    				syschat("Item given to the player succesfully")
    			else
    				syschat("Something wrong happend, errorType is: "..errorType)
    			end
    			>> Gives the player 1x the item 19
    
    		Example 3 - Only Attributes:
    			local itemAttributes = {
    				{1, 2000}, -- 2.000 MÁX HP
    				{17, 15},  -- 15 Half-Humans
    			--  {attrType, attrValue},	
    			}
    
    			local item_created, errorType = create_item(19, 1, itemAttributes)
    			if item_created then
    				syschat("Item given to the player succesfully")
    			else
    				syschat("Something wrong happend, errorType is: "..errorType)
    			end
    
    		Example 4 - Attributes and Sockets:
    			local itemAttributes = {
    				{1, 2000}, -- 2.000 MÁX HP
    				{17, 15},  -- 15 Half-Humans
    			--  {attrType, attrValue},	
    			}
    
    			local itemSockets = {28301, 28317, 28302}
    
    			local item_created, errorType = create_item(19, 1, itemAttributes, itemSockets)
    			if item_created then
    				syschat("Item given to the player succesfully")
    			else
    				syschat("Something wrong happend, errorType is: "..errorType)
    			end
    
    		Example 5 - Only Sockets:
    			local itemSockets = {28301, 28317, 28302}
    
    			local item_created, errorType = create_item(19, 1, {}, itemSockets)
    			if item_created then
    				syschat("Item given to the player succesfully")
    			else
    				syschat("Something wrong happend, errorType is: "..errorType)
    			end
    
    ]]
    function create_item(itemVnum, itemCount, itemAttributes, itemSockets)
    	local function _error(str, ret)
    		if pc.is_gm() then 
    			syschat("lua.create_item.error: "..str..": returned "..ret)
    			return false, ret
    		end
    	end
    
    	if not itemVnum or itemVnum == 0 then
    		return _error("not enough arg (itemVnum == 0)", -3)
    	elseif type(itemCount) ~= "number" then
    		return _error("itemCount must be a number", -2)
    	elseif not itemCount or itemCount == 0 then
    		itemCount = 1
    	end
    
    	itemAttributes = itemAttributes or {}
    	itemSockets = itemSockets or {}
    
    	pc.give_item2_select(itemVnum, itemCount)
    
    	if table.getn(itemAttributes) > 0 then
    		for i = 1, table.getn(itemAttributes) do
    			if table.getn(itemAttributes[i]) < 2 then
    				return _error("itemAttributes["..i.."] is not fully defined, need 2 arguments: {attrType, attrValue}", -1)
    			end
    			item.set_value(i-1, itemAttributes[i][1], itemAttributes[i][2])
    		end
    	end
    
    	if table.getn(itemSockets) > 0 then
    		for i = 1, table.getn(itemSockets) do
    			if not itemSockets[i] then
    				return _error("itemSockets are not fully defined", 0)
    			end
    			item.set_socket(i-1, itemSockets[i])
    		end
    	end
    
    	return true, 1
    end
  4. Hola. Pues na' que no sabía que los oficiales habían puesto esto, así que hoy decidí hacerlo, y os lo traigo.

    Off: Llegan nuevas dungeons al oficial.

     

    Cuando compiléis el binario quedará así:

     

    e4361d3e6f.PNG
     

    /*
    	@PACI - 03.08.15
    
    	The following changes will allow you to see the Monsters Level
    	without clicking on them. Like a normal character, you'll see
    	the level before the monster's name.
    
    	Apply these changes on InstanceBaseEffect.cpp (located at InstanceBase).
    	Replace your AttachTextTail() function with mine, don't forget to add the include!
    */
    #include "PythonNonPlayer.h"
    
    void CInstanceBase::AttachTextTail()
    {
    	if (m_isTextTail)
    	{
    		TraceError("CInstanceBase::AttachTextTail - VID [%d] ALREADY EXIST", GetVirtualID());
    		return;
    	}
    
    	m_isTextTail=true;
    	DWORD dwVID=GetVirtualID();
    
    	float fTextTailHeight=IsMountingHorse() ? 110.0f : 10.0f;
    
    	static D3DXCOLOR s_kD3DXClrTextTail=D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
    	CPythonTextTail::Instance().RegisterCharacterTextTail(m_dwGuildID, dwVID, s_kD3DXClrTextTail, fTextTailHeight);
    
    	if (!m_dwLevel && !IsPC() && !IsNPC() && !IsWarp() && !IsGoto())
    	{
    		const CPythonNonPlayer::TMobTable * pMobTable = CPythonNonPlayer::Instance().GetTable(GetVirtualNumber());
    		
    		if (!pMobTable)
    		{
    			TraceError("Could not get mob table %d", GetVirtualNumber());
    			return;
    		}
    
    		float fAverageLevel = floor(pMobTable->bLevel+0.5f);
    		m_dwLevel = int(fAverageLevel);
    	}
    
    	if (m_dwLevel)
    		UpdateTextTailLevel(m_dwLevel);
    }
  5. Lo que Shang quiere decir es que en la última línea del archivo, donde el self.cube.needMoney, le des al enter, una o dos veces.

    La parte de la carpeta sys es simple, puedes poner su contenido dónde quieras, siempre que luego en el uiCube2.py y en el CubeWindow.py cambies las rutas. Por defecto, están así:

    Sys/CubeWindow.py

    Sys/noseque.tga

     

    Si no quieres cambiarlas, simplemente pega la carpeta Sys en la raíz del cliente.

×
×
  • Crear nuevo...