Jump to content

Kyouko

Member
  • Posts

    14
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Kyouko

  1. 5 hours ago, bl1nd3r said:

    Edit: The actual problem is that everyone in the party can see the party leader, no matter where he is, but the party leader can see other members only if they're close. Also, members can see each other only if they're close to each other. 

    The function GetPartyMemberPosition returns 0 for x and 0 for y once I get a bit far. This of course happens every 3 seconds once it updates. 

     

    So I guess it's either a problem with this function:
     

    bool CPythonPlayer::GetPartyMemberPosition(DWORD dwPID, D3DXVECTOR2* v2Position)
    {
    	std::map<DWORD, TPartyMemberInfo>::const_iterator it = m_PartyMemberMap.find(dwPID);
    	if (it == m_PartyMemberMap.end())
    		return false;
    
    	v2Position->x = it->second.lX;
    	v2Position->y = it->second.lY;
    	return true;
    }

    Or the problem is server side, but I can't seem to figure it out. 

    I got the exact same problem and i've checked it multiple times and couldn't find out why it happens.

  2. Hello as the title say i have a problem with the quest i use the de quest and everytime i click on the npc it just say

     

    c051f6504e.jpg

     

    here is the quest

     

    quest ride_ticket_change begin
    	state start begin
    		when 20349.chat.gameforge.ride_ticket_change._010_npcChat  begin 
    			say_title(mob_name (20349))
    			say(gameforge.ride_ticket_change._020_say)
    			wait()
    			local items = {pc.get_sig_items(10032)}
    			local ticket = nil
    			if table.getn (items) > 1 then
    				for i, v in ipairs (items) do
    					item.select (v)
    					say_title(mob_name(20349))
    					say (gameforge.ride_ticket_change._030_say)
    					say_item_vnum (item.vnum)
    					say (gameforge.ride_ticket_change._040_say)
    					local s = select (locale.yes, locale.no, locale.cancel)
    					if s == 3 then
    						return
    					end
    					if s == 1 then 
    						ticket = v
    						break
    					end
    				end
    			else
    				ticket = items [1]
    			end
    			if ticket == nil then
    				say_title (mob_name (20349))
    				say (gameforge.ride_ticket_change._050_say)
    				return 
    			end
    			say_title (mob_name (20349))
    			say(gameforge.ride_ticket_change._060_say)
    			item.select (ticket)
    			local s = select (gameforge.ride_ticket_change._070_say, gameforge.ride_ticket_change._080_say,gameforge.ride_ticket_change._090_say, gameforge.ride_ticket_change._100_say, gameforge.ride_ticket_change._110_say, gameforge.ride_ticket_change._120_say)
    			if s == 6 then
    				say_title (mob_name (20349))
    				say (gameforge.ride_ticket_change._130_say)
    				return
    			end
    			local summon_item = item.get_value (s-1)
    			say_title (mob_name (20349))
    			say(gameforge.ride_ticket_change._140_say)
    			if pc.give_item2 (summon_item) == 0 then
    				say_title (mob_name (20349))
    				say (gameforge.ride_ticket_change._150_say)
    				return
    			end
    			
    			item.remove()
    
    		end
    	end
    end
    --52701 Àü°©»çÀÚ ±³È¯±Ç     ¸¶±¸°£°æºñº´¿¡°Ô °¡Á®°¡¸é Àü°©»çÀÚ·Î ±³È¯ÇÏ¿© ÁÝ´Ï´Ù.
    --52702 Àü°©È£ ±³È¯±Ç        ¸¶±¸°£°æºñº´¿¡°Ô °¡Á®°¡¸é Àü°©È£·Î ±³È¯ÇÏ¿© ÁÝ´Ï´Ù.
    --52703 Àü°©¿ø ±³È¯±Ç        ¸¶±¸°£°æºñº´¿¡°Ô °¡Á®°¡¸é Àü°©¿øÀ¸·Î ±³È¯ÇÏ¿© ÁÝ´Ï´Ù.
    --52704 Àü°©¶û ±³È¯±Ç        ¸¶±¸°£°æºñº´¿¡°Ô °¡Á®°¡¸é Àü°©¶ûÀ¸·Î ±³È¯ÇÏ¿© ÁÝ´Ï´Ù.
    
    

     

    Greetz

    Namikaze

  3. Are you using vanilla 2.1?

     

    #ldd vanilla_2_1

    vanilla_2_1:

            libstdc++.so.6 => /usr/local/lib32/metin2/libstdc++.so.6 (0x2857b000)

            libm.so.5 => /usr/lib32/libm.so.5 (0x28678000)

            libmd.so.5 => /usr/local/lib32/compat/libmd.so.5 (0x2869d000)

            libz.so.6 => /usr/lib32/libz.so.6 (0x286b5000)

            libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0x286c9000)

            libthr.so.3 => /usr/lib32/libthr.so.3 (0x286d4000)

            libc.so.7 => /usr/lib32/libc.so.7 (0x286f6000)

     

    This is my output.

    You may check if the directory /usr/local/lib32/metin2 exists and upload the libs to this directory.

     

    yes im using vanilla 2.1

    and this says the game

    72qtc.png

  4. As I said, I will never add pm logging functions. Maybe I can allow logging pm's with suspicous contents, but who defines what's suspicious or not? Unless I have some clear ideas how to deal with this problem, I won't add such things. Allowing admins to create filters by themselves would lead into filters like "a" (so every message with an a would be logged)..

     

    My idea is to create a strike-system working with the banlist. If a chat message restricts against the items added in banlist, the message will be censored like you already know and the uncensored message is stored into the database. The user will receive a warning and after 3 warnings, automatic chatblock could be triggered (depending on how many warnings the user received). But I guess this system needs some improvement and a feature to remove old warnings so people won't get punished if they made small mistakes, typo's or got punished by a false warning.

    It's just an idea. Nothing I'll give my word to.

     

    @Mehti: I'm investigating the error now and tell you more about it.

     

    @Namikaze: There is a library error.

    /usr/local/lib32/libstdc++.so.6 is used by your server, but it'd be /usr/local/lib32/metin2/

    Please use ldd as tim suggested on page 5 and report your results.

     

    72lqA.png

    this comes when i type ldd libstdc++.so.6

  5. Hey guys i have a problem with this quest

    quest gildenkonto begin
    state start begin
    function get_money()
    return tonumber(mysql_query("select gold from player.guild where name = '".. guild.get_name() .."';")[1][1]) or 0
    end
    when 11000.chat."Gildenkonto" or 11002.chat."Gildenkonto" or 11004.chat."Gildenkonto" with pc.has_guild() begin
    say_title("Gildenkonto")
    if not pc.is_guild_master() then
    say_reward("Nur der Gildenleader kann auf das[ENTER]Konto zugreifen")
    say()
    return
    else
    say_reward("Guthaben: ".. gildenkonto.get_money())
    say()
    local s = select("Geld abheben","Geld einzahlen","Abbrechen")
    if s == 3 then return
    elseif s == 1 then
    say_title("Gildenkonto")
    say("Wieviel Geld möchtest du abheben?")
    say()
    local m = tonumber(input())
    if m < 1 or m == nil then return end
    if m > gildenkonto.get_money() then
    return syschat("Es ist nicht genügend Yang vorhanden")
    end
    if pc.get_money()+m > 1999999999 then
    return syschat("Du hast zu viel Yang bei dir")
    end
    pc.change_money(m)
    mysql_query("update player.guild set gold = gold - ".. m .." where name = '".. guild.get_name() .."';")
    else
    say_title("Gildenkonto")
    say("Wieviel Geld möchtest du einzahlen?")
    say()
    local m = tonumber(input())
    if m < 1 or m == nil then return end
    if m > pc.get_money() then
    return syschat("Du hast nicht genügend Yang")
    end
    pc.change_money(-m)
    mysql_query("update player.guild set gold = gold - ".. m .. " where name = '".. guild.get_name() .."';")
    end
    end
    end
    end
    end

    if i click on Gildenkonto nothing happens and it just say Gildenkonto and Ok

    6PRTP.jpg

     

    my syserr says only this

    SYSERR: Feb 9 17:40:37 :: RunState: LUA_ERROR: locale/germany/quest/object/state/gildenkonto:1: attempt to index field `?' (a nil value)


    SYSERR: Feb 9 17:40:37 :: WriteRunningStateToSyserr: LUA_ERROR: quest gildenkonto.start enter

  6. Hey guys i got a problem with the Monarch quest

     

    -- World of Metin2 Monarch Election quest


    -- by Musicinstructor and Shogun
    quest monarch_election begin
    state start begin
    when login or enter begin
    if oh.ismonarch() > 0 and pc.count_item(70021) == 0 then
    set_state(newking)
    elseif oh.ismonarch() == 0 then
    if pc.count_item(70021) > 0 then
    pc.remove_item(70021)
    syschat("Dein Segen des Engel's wurde entfernt da du kein Kaiser mehr bist.")
    end
    if pc.count_item(11971) > 0 or pc.count_item(11972) > 0 or pc.count_item(11973) > 0 or pc.count_item(11974) > 0 then
    if pc.get_part(PART_MAIN) > 11970 and pc.get_part(PART_MAIN) < 11975 then
    syschat("Bitte ziehe deine Kaiser Rüstung aus und logge dich neu ein.")
    syschat("Dir ist es nicht mehr erlaubt das zu nutzen.")
    else
    local armor = 11971 + pc.get_job()
    pc.removeitem(armor)
    syschat("Deine Kaiser Rüstung wurde entfernt.")
    end
    end
    end
    if game.get_event_flag("monarch_elect") > 0 and pc.get_level() >= 40 then
    send_letter("Kaiser Wahl")
    end

    end
    when button or info begin
    ----"123456789012345678901234567890123456789012345678901234567890"|
    say("")
    say("")
    say("")
    say("")

    if game.get_event_flag("monarch_elect") == 1 then
    say_title("Kaiser Kandidatur")
    say("")
    ----"123456789012345678901234567890123456789012345678901234567890"|
    say("Willst du dich Bewerben um der neue Herscher von dem"..locale.empire_names[pc.get_empire()].."zu werden?")
    say("Bitte sprich mit dem Schlachtenverwalter in jeder Stadt vergiss nicht")
    say("Du brauchst 1.000.000 Yang und musst Level 65 sein um teilzunehmen.")
    say("")
    say("Wenn der Kandidatur Prozess endet, werden Sie in der Lage sein zu wählen..")
    elseif game.get_event_flag("monarch_electionid") == pc.getqf("electionid") then
    say_title("Kaiser Wahl")
    say("")
    say("Du hast bereits gewählt. Das resultat wird")
    say("Angekündigt nachdem die Wahl beendet wurde.")
    else
    say_title("Kaiser Wahl")
    say("")
    say("Gehe zu dem Schlachtenverwalter in deiner Stadt um dein")
    say("vote abzugeben. Und zeige deinem Reich das du Loyal bist, du brauchst folgendes item:")
    say("")
    say_item_vnum(60004)
    say("Dieses item erhälst du von Monstern gegen die du Kämpfst.")
    end
    say("")
    end

    when kill with game.get_event_flag("monarch_elect") > 0 and pc.level >= 45 begin
    if game.get_event_flag("monarch_electionid") != pc.getqf("electionid") then
    if not npc.is_pc() then
    local limit = get_mob_level[npc.get_race()]
    if limit == nil then
    return
    else
    if pc.get_level() > limit+10 then
    return
    end
    end
    end
    if number(1, 500) == 1 then
    if pc.count_item(60004) == 0 and pc.enough_inventory(60004) then
    pc.give_item2(60004, 1)
    syschat("Du bist nun Qualifiziert um für deinen Kaiser zu wählen.")
    end
    end
    end
    end

    when electionman1.chat."GM: Kaiser Wahl Anpassen" or electionman2.chat."GM: Kaiser Wahl Anpassen" or electionman3.chat."GM: Kaiser Wahl Anpassen" with pc.is_gm() begin
    if game.get_event_flag("monarch_elect") == 1 then
    say_title("Kaiser Wahl:")
    say("")
    ----"123456789012345678901234567890123456789012345678901234567890"|
    say("Momentan sind die Kaiser wahlen Offen.")
    say("")
    say("Sollen sie nun geschlossen werden?")
    say("")
    local s = select("Schließen", "Fortsetzen" )

    if s == 1 then
    notice_all("Die Kaiser Wahl startet nun!")
    notice_all("Zeige dein Zertifikat dem Schlachtenverwalter um voten zu können.")
    game.set_event_flag("monarch_elect", 2)
    game.set_event_flag("monarch_electionid", get_global_time())
    say_title("Kaiser Wahl:")
    say("")
    say("Die bewerbungen sind geschlossen und spieler können")
    say("nun für ihren Kaiser voten.")
    say("")
    end

    elseif game.get_event_flag("monarch_elect") == 2 then
    say_title("Kaiser Wahl:")
    say("")
    say("Momentan läuft bereits eine Wahl für den neuen Kaiser.")
    say("Soll sie jetzt beendet werden?")
    say("")
    say_reward("Momentaner Kaiser:")
    say_reward("Rotes Reich: "..monarch_election.getcurrentwinner(1)[1])
    say_reward("Gelbes Reich: "..monarch_election.getcurrentwinner(2)[1])
    say_reward("Blaues Reich: "..monarch_election.getcurrentwinner(3)[1])
    say("")
    local s = select("Beenden", "Fortsetzen")

    if s == 1 then
    notice_all("Die Kaiser Wahl wurde beendet.")
    game.set_event_flag("monarch_elect", 0)
    if monarch_election.getcurrentwinner(1)[2] != 0 then mgmt.monarch_change_lord(1, monarch_election.getcurrentwinner(1)[2]) end
    if monarch_election.getcurrentwinner(2)[2] != 0 then mgmt.monarch_change_lord(2, monarch_election.getcurrentwinner(2)[2]) end
    if monarch_election.getcurrentwinner(3)[2] != 0 then mgmt.monarch_change_lord(3, monarch_election.getcurrentwinner(3)[2]) end
    end

    elseif game.get_event_flag("monarch_elect") == 0 then
    say_title("Kaiser Wahl:")
    say("")
    say("Hier kannst du die Kaiser Wahl Starten.")
    say("")
    say("Willst du sie nun starten?")
    say("")
    local s = select("Starten", "Nicht starten")

    if s == 1 then
    notice_all("Die Kaiser Kandidatur Zeit beginnt jetzt!")
    notice_all("Gehe zum Schaltenverwalter um teil zunehmen.")
    game.set_event_flag("monarch_elect", 1)
    game.set_event_flag("monarch_electionid", get_global_time())
    monarch_election.clearcandidacy()
    end

    end

    end


    when electionman1.chat."Kaiser Wahl" or electionman2.chat."Kaiser Wahl" or electionman3.chat."Kaiser Wahl" with game.get_event_flag("monarch_elect") == 2 begin
    say_title("Kaiser Wahl:")
    say("")

    if pc.get_level() < 45 then
    say("Du musst Level 45 sein um voten zu können. komm wieder,")
    say("wenn du Level 45 erreicht hast.")
    say("")
    return
    end

    if game.get_event_flag("monarch_electionid") == pc.getqf("electionid") then
    say("Du hast bereits gevotet. Und kannst nicht nochmal Voten!")
    say("")
    return
    end
    if pc.count_item(60004) < 1 then
    say("Du brauchst dieses Dokument, um zu beweisen, das du wirklich ein")
    say("ein Bürger von "..locale.empire_names[pc.get_empire()].." bist.")
    say("")
    say_item_vnum(60004)
    say("Du kannst es von jedem monster bekommen. Komm")
    say("wieder wenn du eins hast.")
    say("")
    return
    end

    local gname_table = monarch_election.candidacy_list(pc.get_empire())
    if table.getn(gname_table) == 0 then
    -- no currently war
    say("Es gibt keine Kandidaten!")
    say("")
    else
    table.insert(gname_table, "Abbrechen")
    ----"123456789012345678901234567890123456789012345678901234567890"|
    say("Du bist Qualifiziert um teilzunehmen. Bitte vote vorsichtig;")
    say("du kannst es nur einmal.")
    say("")
    wait()
    local s = select_table(gname_table)

    if s == table.getn(gname_table) then
    return;
    else
    monarch_election.election(s)
    pc.setqf("electionid", game.get_event_flag("monarch_electionid"))
    pc.remove_item(60004, 1)
    say_title("Kaiser Wahl:")
    say("")
    say("Vielen Dank für deine Teilnahme!")
    say("")
    say_reward("Du hast: "..gname_table" gewählt")
    say("")
    end
    end
    end


    when electionman1.chat."Bewerben für die Kaiser Wahl" or electionman2.chat."Bewerben für die Kaiser Wahl" or electionman3.chat."Bewerben für die Kaiser Wahl" with game.get_event_flag("monarch_elect") == 1 begin
    local NEED_MONEY = 1000000
    local NEED_LEVEL = 65
    say_title("Kaiser Wahl:")
    say("")
    say("Die folgenden Anforderungen sind notwendig für einen Kaiser:")
    say("")
    say_reward("1. Eine Kandidatur Gebühr von "..NEED_MONEY.." Yang.")
    say_reward("2. Level "..NEED_LEVEL.." musst du erreicht haben.")
    say("")

    if game.get_event_flag("monarch_elect") == 0 then
    say("Die Wahlperiode hat noch nicht begonnen.")
    say("Komm wieder wenn sie begonnen hat.")
    say("")
    return
    end
    if game.get_event_flag("monarch_electionid") == pc.getqf("electionid") then
    say("Du hast dich bereits beworben für die Wahl")
    say("")
    return
    end

    say("Möchtest du an der Wahl teilnehmen?")
    say("")

    local s = select("Ja, Ich möchte teilnehmen.", "Nein, Danke.")

    if s == 1 then
    say_title("Kaiser Wahl:")
    say("")
    if monarch_election.candidacycount(pc.get_empire()) >= 8 then
    say("Es tut uns leid, aber wir haben schon genug Kandidaten.")
    say("")
    say("Du kannst es in der nächsten Wahl wieder versuchen..")
    elseif pc.get_gold() >= NEED_MONEY and pc.get_level() >= NEED_LEVEL then
    say("Du bist nun Registriert für die Wahl.")
    say("")
    say("Viel Glück!")
    pc.change_gold(-NEED_MONEY);
    monarch_election.candidacy();
    pc.setqf("electionid", game.get_event_flag("monarch_electionid"))
    else
    say("Sorry, du erfüllst die bedingungen nicht.")
    end
    say("")
    end
    end

    function candidacy()
    local f = io.open("data/monarch_election", "a+")
    f:write(pc.get_player_id().."t"..pc.get_empire().."t0t"..pc.get_name().."tn")
    f:close()
    end

    function clearcandidacy()
    local f = io.open("data/monarch_election", "w+")
    f:close()
    end

    function candidacycount(empire)
    local count = 0
    local f = io.open("data/monarch_election", "r")
    for line in f:lines() do
    local e = string.split(line, "t")
    if e != nil and tonumber(e[2]) == empire then
    count = count + 1
    end
    end
    f:close()
    return count
    end

    function candidacy_list(empire)
    local res = {}
    local f = io.open("data/monarch_election", "r")
    for line in f:lines() do
    cinfo = string.split(line, "t")
    if tonumber(cinfo[2]) == empire then
    table.insert(res, cinfo[4])
    end
    end
    f:close()
    return res
    end

    function election(id)
    local c_list = {}
    local c_count = 0
    local f = io.open("data/monarch_election", "r")
    for line in f:lines() do
    table.insert(c_list, string.split(line, "t"))
    c_count = c_count + 1
    end
    f:close()
    f = io.open("data/monarch_election", "w+")
    local e_i = 1
    for i = 1, c_count, 1 do
    if e_i == id then
    c_list[3] = tonumber(c_list[3]) + 1
    end
    if tonumber(c_list[2]) == pc.get_empire() then
    e_i = e_i + 1
    end
    f:write(c_list[1].."t"..c_list[2].."t"..c_list[3].."t"..c_list[4].."tn")
    end
    f:close()
    end

    function getcurrentwinner(empire)
    local res = {"Keiner", 0}
    local f = io.open("data/monarch_election", "r")
    local maxvotes = -1
    for line in f:lines() do
    local exploded = string.split(line, "t")
    if tonumber(exploded[2]) == empire and tonumber(exploded[3]) > maxvotes then
    maxvotes = tonumber(exploded[3])
    res = {exploded[4], tonumber(exploded[1])}
    end
    end
    f:close()
    return res
    end


    end
    state newking begin
    when login or enter begin
    send_letter("Gratulation!")
    end
    when button or info begin
    local treatment = {
    [0] = "Kaiser",
    [1] = "Kaiserin",
    }
    local armor = 11971 + pc.get_job()

    ----"123456789012345678901234567890123456789012345678901234567890"|
    say_title("Gratulation!")
    say("")
    say("Du wurdest gewählt als "..treatment[pc.get_sex()].." von "..locale.empire_names[pc.get_empire()].."!")
    say("")
    say("Als ein "..treatment[pc.get_sex()]..", bekommst du eine Kaiser Rüstung und Segen des")
    say("Engel's für die Dauer deiner Herrschaft.")
    say("")
    say("Das Juwel aktiviert dir die Kaiser Kraft, aber")
    say("Beachte bei der Nutzung dieses items wird Yang gebraucht aus")
    say("Deinem Reich, also wähle weise")
    say("")
    say("Möge deine Herrschaft gedeihen!")
    say("")
    clear_letter()
    set_state(start)
    if pc.count_item(armor) == 0 then
    pc.give_item2(armor)
    end
    if pc.count_item(70021) == 0 then
    pc.give_item2(70021)
    end

    notice_all("Der/Die "..treatment[pc.get_sex()].." "..pc.getname().." von "..locale.empire_names[pc.get_empire()].." wurde gekrönt! begrüßt der/die "..treatment[pc.get_sex()].."!")
    end
    end
    end

     

    and this says my syserr

    SYSERR: Feb 8 16:56:31 :: RunState: LUA_ERROR: [string "monarch_election"]:45: attempt to call field `?' (a string value)


    SYSERR: Feb 8 16:56:31 :: WriteRunningStateToSyserr: LUA_ERROR: quest monarch_election.start click
    SYSERR: Feb 8 16:56:38 :: RunState: LUA_ERROR: [string "monarch_election"]:45: attempt to call field `?' (a string value)
    SYSERR: Feb 8 16:56:38 :: WriteRunningStateToSyserr: LUA_ERROR: quest monarch_election.start click

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.