Jump to content

henrya12

Miembro
  • Contador contenido

    1
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    henrya12 reacted to themagicfreak in Sistema de mineria   
    Hola bueno he sacodo este sistema de elitepvpers y para los que alli no se enteran mucho las traigo aqui,alla vamos.
     
    Está viendo el "sistema de la minería", que ha sido publicado recientemente.
    ¿Qué se puede hacer?
    -> puedes comprar minas
    -> Se puede ajustar la APN de trabajo para obtener más yang de las minas
    -> Puede permitir a los jugadores trabajar, lo que da a ambas partes Yang
    -> puedes cambiar un balance en el que se puede ver la cantidad de las minas
    -> puedes tratar de atacar a otras minas
    -> Se necesitan pases de plata y Yang para la apertura de una mina de plata
    -> La búsqueda es fácilmente personalizable.
     
    La quest:

    quest mine begin state start begin function get_minecount(playername) if playername == nil then local playername = pc.get_name() end local curmines = mysql_query("SELECT mines FROM player.player WHERE player.`name`='"..playername."'") return tonumber(curmines[1][1]) end function get_working() local result = mysql_query("SELECT working FROM player.player WHERE player.name='"..pc.get_name().."'") return tonumber(result[1][1]) end function buy_mine() local curmine = mine.get_minecount() mysql_query("UPDATE player.player SET mines=mines+1 WHERE player.`name`='"..pc.get_name().."'") mysql_query("INSERT INTO player.mine_proto (owner) VALUES('"..pc.get_id(pc.get_name()).."')") mysql_query("INSERT INTO player.mine_index (id) SELECT id FROM sh_player.mine_proto WHERE mine_proto.`owner`='"..pc.get_id(pc.get_name()).."'") chat("Du hast eine Silbermine gekauft!") chat("Du hast nun "..curmine.." Minen") end function calc_price() local pricelist = { } local curmine = mine.get_minecount() local calcprice = curmine*100000000+100000000 table.insert(pricelist, calcprice) table.insert(pricelist, 1) return pricelist end function get_title(mine_id) assert(type(mine_id)=="number", "mine_id ist keine Zahl!") local title = mysql_query("SELECT bezeichnung FROM player.mine_proto WHERE mine_proto.id='"..mine_id.."'") return tostring(title[1][1]) end function get_money(mine_id) assert(type(mine_id)=="number", "mine_id ist keine Zahl!") local money = mysql_query("SELECT money FROM player.mine_proto WHERE mine_proto.id='"..mine_id.."'") return tonumber(money[1][1]) end function get_workers(mine_id) assert(type(mine_id)=="number", "mine_id ist keine Zahl!") local workers = mysql_query("SELECT workers FROM player.mine_proto WHERE mine_proto.id='"..mine_id.."'") return tonumber(workers[1][1]) end function get_user_workers(mine_id) assert(type(mine_id)=="number", "mine_id ist keine Zahl!") local result = {} local title = mysql_query("SELECT user1,user2,user3,user4,user5 FROM player.mine_index WHERE mine_index.id='"..mine_id.."'") for x = 1, 5, 1 do table.insert(result, tonumber(title[1][x])) end return result end function get_income(mine_id) assert(type(mine_id)=="number", "mine_id ist keine Zahl!") local workers = mine.get_workers(mine_id) local workers2 = mine.get_user_workers(mine_id) local counter = 0 for x = 1, 5, 1 do if workers2[x] != 0 then local counter=counter+1 end end local income1 = workers*10000 local income2 = counter*50000 return tonumber(income1+income2) end function update(mine_id) assert(type(mine_id)=="number", "mine_id ist keine Zahl!") local last_update = mysql_query("SELECT last_update FROM player.mine_proto WHERE mine_proto.id='"..mine_id.."'") local calcdif = get_time()-tonumber(last_update[1][1]) local abstand = math.floor(calcdif/3600) if abstand == 0 then return end local mine_income = mine.get_income(mine_id) local give_money = mine_income*abstand mysql_query("UPDATE player.mine_proto SET last_update='"..get_time().."' WHERE mine_proto.id='"..mine_id.."'") mysql_query("UPDATE player.mine_proto SET money=money+'"..tonumber(give_money).."' WHERE mine_proto.id='"..mine_id.."'") end function get_mines(playername) if playername == nil then local playername = pc.get_name() end local mymines = mine.get_minecount() local get_mines = mysql_query("SELECT id FROM player.mine_proto WHERE owner='"..pc.get_id(playername).."'") local result = {} for x = 1, mymines, 1 do table.insert(result, tonumber(get_mines[1][x])) end return result end when 20092.chat."Die Silberminen" begin local silberpass = 100079 local yangkosten = 100000000 say_title("Die Silberminen") say("Hallo "..pc.get_name().."!") say("Die Silberminen sind offen!") say("Wenn du einen Pass dafür hast und") say("die Aufwendungen bezahlen kannst,") say("kannst du gerne eine Silbermine eröffnen!") say_reward("Du brauchst einen Silberpass.") say_reward("Du brauchst "..yangkosten.." Yang!") local a = select("Silbermine eröffnen!", "Was ist das?", "Abbrechen") if a== 3 then return end if a == 2 then say_title("Die Silberminen") say("Wenn du eine Silbermine aufmachst,") say("erhälst du immer wieder Yang. Das Yang") say("werden deine Arbeiter in der Mine lagern.") say("Du kannst es jederzeit abholen.") say("Je mehr Arbeiter darin arbeiten, desto") say("mehr Yang erhälst du.") return end if pc.count_item(silberpass) == 0 then say_title("Die Silberminen") say("Du hast leider keinen Pass!") say("Bitte finde einen Silberpass!") say_item_vnum(silberpass) return end if pc.get_gold() < yangkosten then say_title("Die Silberminen") say("Du hast leider nicht genug Yang.") say("Komm wieder, wenn du genug hast.") return end pc.change_gold(-yangkosten) pc.remove_item(silberpass) mine.buy_mine() say_title("Die Silberminen -> Mine anlegen") say("Du hast die Silbermine gekauft.") say("Ab sofort kannst du sie verwalten!") wait() setstate(mines) end end state mines begin when login or enter begin send_letter("Silberminen") end when button or info begin local silberpass = 100079 say_title("Silberminen") say("Was möchtest du tun?") if pc.getqf("mines") == 5 then local a = select("Silberminen", "Minen überfallen","Bilanz", "Abbrechen") else local a = select("Silberminen", "Minen überfallen","Bilanz", "Abbrechen", "Mine kaufen") end if a == 4 then return end if a == 5 then local pricer = mine.calc_price() say_title("Silbermine kaufen") say("Du möchtest eine Silbermine aufmachen?") say("Das kostet dich "..pricer[1].." Yang.") say("Zudem brauchst du noch:") say(pricer[2].." Silberpässe.") local a2 = select("Kaufen", "Abbrechen") if a2 == 2 then return end if pc.get_gold() < tonumber(pricer[1]) then say("Du hast nicht genug Yang!") return end if pc.count_item(silberpass) < tonumber(pricer[2]) then say("Du hast nicht genügend Silberpässe!") return end pc.change_gold(-tonumber(pricer[1])) pc.remove_item(silberpass, tonumber(pricer[2])) mine.buy_mine() setskin(NOWINDOW) return end if a == 3 then local getmines = mine.get_mines() local moneymines = {} local incomemines = {} for x = 1, table.getn(getmines), 1 do mine.update(getmines[x]) table.insert(moneymines, mine.get_money(tonumber(getmines[x]))) table.insert(incomemines, mine.get_income(tonumber(getmines[x]))) end local endincome = 0 local endmoney = 0 for x = 1, table.getn(moneymines), 1 do local endincome = endincome+incomemines[x] local endmoney = endmoney+moneymines[x] end say_title("Silberminen -> Bilanz") for x = 1, table.getn(getmines), 1 do say("Einkommen "..mine.get_title(getmines[x])..": "..incomemines[x]) say("Yang "..mine.get_title(getmines[x])..": "..moneymines[x]) say("---") end say("---") say("Kumuliertes Einkommen: "..endincome) say("Kumuliertes Yang: "..endmoney) return end if a == 1 then local getmines = mine.get_mines() local moneymines = {} local incomemines = {} for x = 1, table.getn(getmines), 1 do mine.update(getmines[x]) table.insert(moneymines, mine.get_money(tonumber(getmines[x]))) table.insert(incomemines, mine.get_income(tonumber(getmines[x]))) end for x = 1, table.getn(getmines), 1 do say_title(mine.get_title(getmines[x])) say("Einkommen: "..incomemines[x]) say("Yang: "..moneymines[x]) say("Arbeiter: "..mine.get_workers(getmines[x])) say("Beschäftigte Arbeiter:") local userworkers = mine.get_user_workers(getmines[x]) local counter = 0 for y = 1, table.getn(userworkers), 1 do if userworkers[y] != 0 then local counter = counter+1 end end for y = 1, counter, 1 do say(" - "..pc.get_name_by_id(userworkers[y])) end local b = select("Auszahlen", "Arbeiter feuern", "NPC-Arbeiter verändern", "Fertig") if b == 1 then say_title("Auszahlen") say("Wie viel möchtest du auszahlen?") local c = input("") if c == "" or c == 0 then return end local c = tonumber(c) if c < 0 then return end if moneymines[x] < c then say_title("Auszahlen") say("Du hast nicht so viel Yang in der Mine!") return end mysql_query("UPDATE player.mine_proto SET money=money-"..c.." WHERE id='"..getmines[x].."'") pc.give_gold(c) chat("Du hast "..c.. " Yang entnommen!") return end if b == 2 then say_title("Arbeiter feuern") say("Welchen Arbeiter möchtest du entlassen?") local cleanlist = {} for x2 = 1, table.getn(userworkers), 1 do if userworkers[x2] != 0 then table.insert(cleanlist, userworkers[x2]) else table.insert(cleanlist, "---") end end local c2 = select(cleanlist[1], cleanlist[2], cleanlist[3], cleanlist[4], cleanlist[5]) if c2 <= 5 and c2 >= 1 then if userworkers[c2] == 0 then return end say_title("Arbeiter entlassen") say("Bist du sicher, dass du den Arbeiter entlassen willst?") local c3 = select("Entlassen", "Abbrechen") if c3 == 2 then return end mysql_query("UPDATE player.mine_index SET user"..c2.."='0' WHERE id='"..getmines[x].."'") chat("Du hast den Arbeiter entlassen!") end return end if b == 3 then say_title("NPC-Arbeiter verändern") say("Gib bitte die Veränderung an.") say("Jeder Arbeiter kostet dich 1000000 Yang.") say("Du erhälst das Yang beim Entlassen zu 50% zurück.") say("Negative Zahlen lässt Arbeiter verschwinden, bis keine") say("mehr übrig sind.") local c = input("") if c == "" or c == 0 then return end local c = tonumber(c) if c < 0 then local workers = mine.get_workers(getmines[x]) if workers-math.abs(c) < 0 then mysql_query("UPDATE player.player SET workers=0 WHERE id='"..getmines[x].."'") pc.give_gold(workers*500000) else mysql_query("UPDATE player.player SET workers=workers-"..math.abs(c).." WHERE id='"..getmines[x].."'") pc.give_gold(math.abs(c)*500000) end else if pc.get_gold() < math.abs(c)*1000000 then say("Du hast leider nicht genug Yang!") return end pc.change_gold(-math.abs(c)*1000000) mysql_query("UPDATE player.player SET workers=workers+"..math.abs(c).." WHERE id='"..getmines[x].."'") say("Du hast erfolgreich die NPC-Arbeiter eingestellt!") end end end return end if a == 2 then say_title("Mine überfallen") say("Von welchem Spieler möchtest du eine Mine überfallen?") local b = input("") if b == "" then return end if pc.exists(b) == false then say("Den Spieler gibt es nicht!") return end local minecount = mine.get_minecount(b) if minecount == 0 then say("Dieser Spieler hat keine Minen!") return end say("Wie viel Yang möchtest du für den überfall einsetzen?") local d = input("") if d == "" or d <= 0 then return end if pc.get_money() < d then say("Du hast nicht genug Yang!") return end local factor = d / number(10, 100) if d > 1000000 then local chance = 10 elseif d > 750000 then local chance = 9 elseif d > 500000 then local chance = 8 elseif d > 250000 then local chance = 7 elseif d > 100000 then local chance = 6 elseif d > 75000 then local chance = 5 elseif d > 50000 then local chance = 4 elseif d > 25000 then local chance = 3 elseif d > 10000 then local chance = 2 else local chance = 1 end local finishchance = number(chance, 15) if finishchance == 15 then local c = number(1, minecount) local playermines = mine.get_mines(b) local get_themoney = mine.get_money(playermines[c]) local moneycalc = get_the_money/4 mysql_query("UPDATE player.mine_proto SET money=money-"..moneycalc.." WHERE id='"..playermines[c].."'") pc.give_gold(moneycalc) say_title("überfall -> Erfolg!") say("Du hast die Mine erfolgreich überfallen.") say("Deine Beute: "..moneycalc) else say_title("überfall -> Fehlschlag") say("Du hast es leider nicht geschafft.") end end end when 20092.chat."In den Minen arbeiten" with mine.get_working() < 5 begin say_title("In den Minen arbeiten") say("Du kannst in einer Mine arbeiten, wenn du willst.") say("Du erhälst dafür 500.000 Yang jeden Tag!") say("Du musst aber daran denken, hier vorbei zu kommen.") say("Möchtest du dich in eine Mine eintragen?") local a = select("Eintragen", "Abbrechen") if a == 2 then return end say_title("In einer Mine arbeiten") say("Bitte gib' den Spielernamen an, bei") say("dem du arbeiten willst.") local b = input("") if b == "" then return end if pc.exists(b) == false then say("Der Spieler existiert nicht!") return end local minecount = mine.get_minecount(b) if minecount == 0 then say("Dieser Spieler hat keine Minen!") return end local playermines = mine.get_mines(b) for x = 1, minecount, 1 do local userworkers = mine.get_user_workers(playermines[x]) for y = 1, table.getn(userworkers), 1 do if userworkers[y] == 0 then say_title("Platz gefunden!") say("Ein Platz in "..mine.get_title(playermines[x]).." ist frei!") say("Möchtest du dort arbeiten?") local c = select("Auswählen", "Abbrechen") if c == 1 then mysql_query("UPDATE player.mine_index SET user"..y.." = '"..pc.get_id().."'") mysql_query("UPDATE player.player SET working=working+1 WHERE `name`='"..pc.get_name().."'") chat("Du arbeitest nun in der Mine!") return end end end end say("Leider konnten keine weiteren Stellen gefunden werden.") end when 20092.chat."Minenarbeit belohnen!" with mine.get_working() >= 1 begin setskin(NOWINDOW) local thisdate = tonumber(os.date("%d")) if pc.getqf("lastdate") != thisdate then local belohnung = mine.get_working()*500000 pc.give_gold(belohnung) pc.setqf("lastdate", thisdate) chat("Du hast deine Belohnung abgeholt!") else chat("Leider gibt es heute keine Belohnung mehr.") chat("Komm' morgen wieder.") end end end end Y las funciones que se necesitan en questlib:

    function pc.exists(playername) assert(type(playername)=="string", "Spielername ist kein String!") local ergebnis = mysql_query("SELECT exists FROM player.player WHERE player.`name`='"..playername.."'") local result = tonumber(ergebnis[1][1]) if result == 1 then return true end return false end function pc.get_id(playername) if playername == nil then local playername = pc.get_name() end local result = mysql_query("SELECT id FROM player.player WHERE player.`name`='"..playername.."'") assert(type(result[1][1])!="nil", "Keine ID zum Namen!") return tonumber(result[1][1]) end function pc.get_name_by_id(playerid) assert(type(playerid)=="number", "Playerid ist keine Nummer!") local result = mysql_query("SELECT `name` FROM player.player WHERE player.id='"..playerid.."'") assert(type(result[1][1])!="nil", "Kein Name zur ID!") return tostring(result[1][1]) end Además, es necesario ampliar la tabla de la DB del jugador:
    ALTER TABLE player ADD `exists` enum('1','0') NOT NULL DEFAULT '1'; ALTER TABLE player ADD `mines` int(1) NOT NULL DEFAULT '0'; ALTER TABLE player ADD `working` int(1) NOT NULL DEFAULT '0'; Acontinuancion deberas crear otras 2 tablas:
    CREATE TABLE `mine_index` ( `id` int(10) unsigned NOT NULL DEFAULT '0', `user1` int(12) unsigned NOT NULL DEFAULT '0', `user2` int(12) unsigned NOT NULL DEFAULT '0', `user3` int(12) unsigned NOT NULL DEFAULT '0', `user4` int(12) unsigned NOT NULL DEFAULT '0', `user5` int(12) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `mine_proto` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `owner` int(12) unsigned NOT NULL DEFAULT '0', `money` bigint(64) unsigned NOT NULL DEFAULT '0', `controller` int(12) unsigned NOT NULL DEFAULT '0', `workers` int(12) unsigned NOT NULL DEFAULT '0', `bezeichnung` varchar(18) NOT NULL DEFAULT 'Mine', `last_update` bigint(64) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; Creditos:
    .Alessa
     
    Fuente:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Las traducciones de las quest es a gusto de cada uno yo solo traigo para la gente que no visita Epvp
  2. Me Gusta
    henrya12 reacted to NazoX in MOB_PROTO E ITEM_PROTO(.SQL) ESPAÑOL   
    Buenas chicos, pues edito este post, con nuevos links e imagenes, a lo que vamos.
    1-Descargar el archivo que hay adjunto más abajo para 34k o 2089M
    2-Segunda opción bajar los txt  para 40k o superior.
    3-Para los txt simplemente lo metéis en vuestra carpeta /db del filezilla o winscp
    4- Para instalar la 1 opción vamos al navicat:
    -Después vamos a navicat, -->player-->tables damos botón derecho y ejecutamos en execute files sql Quedaría así:


    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  3. Me Gusta
    henrya12 reacted to KeKo in Traducir los comentarios de NPC, mobs y demás   
    Como Traducir Los Comentarios De Los NPC's Mobs y Demas
     
     
    Paso 1:
    Abrimos El "FileZilla"

     
     
    Paso 2:
    vamos a "/usr/rain/channel/share_data/locale/hongkong/quest"
    y buscamos el archivo locale_big5.lua
     

     
     
    Paso 3:
    Descargamos El Archivo locale_big5.lua
     

     
     
    Paso 4:
    Abrimos El Archivo

     
     
    Paso 5:
    Lo Abrimos Con Word

     
     
    Paso 6:

     
    y listo ya pueden ver los caracteres para que hagan la traduccion
     
    Paso 7:
    Aqui Estan Los Comentarios De Los Bichos, ya podeis simplemente editarlos y luego darle a cerrar y guardar.
     
     
    *Cuando implemente esto en su server aordaros de abrir el archivo desde el freeBSD y cambiarlo con el editor "ee"
     
    -Créditos: a quien la haya hecho de diosesmx, tiene tanto tiempo que ni me acuerdo quien la hizo xd, si teneis dudas decirme.
  4. Me Gusta
    henrya12 reacted to themagicfreak in para que pase del personaje y no te devuelva al login   
    si no va aqui muevanlo porfavor =).
     
    Hacer Copia de seguridad del servidor
     
    esto me lo paso el creador de los files 2013 invoice de elitepvpers y esta en elitepvpers obviamente la acomode un poco en español y aqui engo a ponerla.
     
    algunos de nosotros estamos familiarizados con el problema de que los jugadores solo lleguen hasta elejir personaje y los devuelva al login, si el servidor si se ejecuta en una máquina local y no en un dedicado.
     
    La razón por la que este problema se está produciendo es la sucesión de paquetes de inicio de sesión:
     
    Codigo:
     
    struct SSimplePlayer {
    unsigned long dwID;
    unsigned char szName[25];
    unsigned char byJob;
    unsigned char byLevel;
    unsigned long dwPlayMinutes;
    unsigned char byST;
    unsigned char byHT;
    unsigned char byDX;
    unsigned char byIQ;
    unsigned short wMainPart;
    bool bChangeName;
    unsigned short wHairPart;
    unsigned char bDummy[4];
    long int x;
    long int y;
    unsigned long int lAddr;
    unsigned short wPort;
    unsigned char skill_group;
    };
     
    typedef SSimplePlayer TSimplePlayer;
     
    struct packet_login_success
    {
    unsigned char bHeader;
    TSimplePlayer players[4];
    unsigned long guild_id[4];
    unsigned char guild_name[4][13];
    unsigned long handle;
    unsigned long random_key;
    };
     
    typedef packet_login_success TPacketGCLoginSuccess;
     
    TSimplePlayer :: laddr es la dirección de destino para el servidor (laddr equivalente a g_szPublicIP). g_szPublicIP es la dirección de la tarjeta de interfaz de red local, por ejemplo, 192.168.0.1. El significado de esto es que el jugador consiga esta dirección local al iniciar sesion y conectarse al servidor creado en estas direcciones ... Así, cuando el jugador selecciona el carácter, el jugador obtiene una desconexión, ya que la dirección local no está disponible en Internet.
     
    ¿Cómo solucionarlo?
    Patch (r2089M ~ Versión 47 MB):
    (es el game que tienen en los server files)
    Codigo:
     
    000916C4: F0 00
    000916C5: 62 63
    000916DD: F0 00
    000916DE: 62 63
    00091769: F0 00
    0009176A: 62 63
    001AB8E5: F0 00
    001AB8E6: 62 63
    001AB916: F0 00
    001AB917: 62 63
    001AB93B: F0 00
    001AB93C: 62 63
     
     
    Y empezar los núcleos con los siguientes argumentos:
    . /game -I <PUBLIC_ADDRESS>
     
    Si lo desea, puede configurar el puerto con -p <PUERTO> y si lo desea, puede especificar el archivo de configuración con -n <TAG> (esquema:. CONFIG {TAG}).
     
    Así que los jugadores no necesitan un mc o sura para entrar a servidores locales o múltiples servidores!
     
    Diff Pacth:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Creditos:
    Anohros
     
    Fuente:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
×
×
  • Crear nuevo...