Jump to content

PACI

Miembro
  • Contador contenido

    501
  • Ingreso

  • Última visita

  • Días ganados

    58

Todo lo publicado 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. Que mierda de fix, entonces nunca podrás tirar yang al suelo
  3. 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
  4. 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
  5. Utilizo mainline desde que salió, obviamente sí que lo hace. En el caso de que edites un header, se volverán a compilar todos los source-files que lleven incluido ese header, de toda la vida.
  6. Jeo, creo que no hay ninguna funcion built-in para hacer un countdown en lua. Pero se puede jugar con los os.time(), por ej así: function wait(sec) local curTime = os.time() local nextTime = os.time()+sec while curTime < nextTime do sec = nextTime-curTime curTime = os.time() end endAhora se puede editar para que haga print del tiempo que falta.
  7. No lleva item_scale, así que no es "full" como decís xD
  8. 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í: /* @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); }
  9. Me gusta el design, pero pienso que se podria ahorrar mucho codigo
  10. Hola otra vez. Os dejo aquí esta dungeon, pero aparte de la Mazmorra Arañas 3. En la descarga hay la quest, regens y el mapa. Nota: Probablemente hay funciones que vosotros no tengáis en la quest, pero nada del otro mundo, simplemente las borráis. Descarga: https://mega.co.nz/#!SxEFgYBI!-Wi1-OVC8Q3pq9oWjqwgpLE8xpX9RiJOBONtLFZZtC0 Saludos
  11. Hola. Pues nada, el titulo lo dice todo. Os vais a char_item.cpp, y borrais lo que he seleccionao Compilais y ale Saludos
  12. El set existe por defecto (item_set_value)
  13. en el uitooltip.py busca el vnum de las autopotas en las que puedes ver la cantidad, y agregas el vnum de las q no puedes
  14. En vez de ejecutar la query desde el game lo haria desde la db.
  15. Puede depender del contenido de tu source, cuanto menos cosas tengas, evidentemente, menos pesará el core después de compilado. Aunque yo diría que es porque el tuyo es unstripped, si quieres reducirlo ejecuta este comando: strip -s game.
  16. Te has olvidado de que se necesita editar el store-type de los array que están en DWORD.
  17. 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.
  18. Buenas. Hace un par de días vi el post de Think en dev, y posteriormente el de Shogun aquí sobre el exploit, si se puede llamar así, del comando /cube. Por este motivo, decidí hacer una versión del cubo sin el comando /cube. En otras palabras, con python y lua para que los que aún no utilizan el source puedan usar el cubo sin problemas tan graves. Debo decir que por ahora los únicos bugs - es más, no son bugs del todo, simplemente hay cosas que no están incluidas y que no son tan necesarias o graves - son: Si en el cubo colocamos más de los items necesarios, el sistema no reconocerá ningún premio por ellos, por lo que es necesario que coloquemos APENAS los items necesarios, ni más, ni menos. Si por ejemplo en el cube.txt tenemos el mismo npc con dos mismos premios, en el GUI aparecerá uno de ellos, y en la parte de los materiales, a pesar de que tenga el icono de un item, saldrá la opción "or". Ej: http://puu.sh/h4X7X/30af70cfdf.jpg En la descarga incluye una pequeña guía explicando dónde va cada cosa en los python, solo hay que editar game.py y el ui.py básicamente. Nota: Solamente he probado el sistema en con game r34k y un bin r36k, no sé del todo si en revs inferiores funcionará, aunque debería. Nota2: No sé si hay algún diff que solucione el problema. Nota3: Si vais a usarlo, tened en cuenta que debéis desactivar el comando /cube con un diff o via CMD. Descarga: http://www.mediafire.com/download/yaur9mfxhcw50ml/Cube.7z Os dejo un screenshot: Saludos.
  19. while(x <= empleados); No soy experto en C#, pero no será este el problema? En C++ para hacer un while-loop no le pones el ; al final: while (x <= empleados) { // do smth } Por cierto, no indicas q tipo de var es la variable sueldos.
×
×
  • Crear nuevo...