Jump to content

brianman

Inactive Member
  • Posts

    36
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by brianman

  1. HELP! Problem(Mainline):

    	int npc_get_ip(lua_State* L)
    	{
    		LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr();
    		if (npc && npc->IsPC())
    			lua_pushstring(L, npc->GetDesc()->GetHostName());
    		else
    			lua_pushstring(L, "");
    		return 1;
    	}
    
    	void RegisterNPCFunctionTable()
    	{
    		luaL_reg npc_functions[] = 
    		{
    			{ "getrace",			npc_get_race			},
    			{ "get_race",			npc_get_race			},
    			{ "open_shop",			npc_open_shop			},
    			{ "get_empire",			npc_get_empire			},
    			{ "is_pc",				npc_is_pc			},
    			{ "is_quest",			npc_is_quest			},
    			{ "kill",				npc_kill			},
    			{ "purge",				npc_purge			},
    			{ "is_near",			npc_is_near			},
    			{ "is_near_vid",			npc_is_near_vid			},
    			{ "lock",				npc_lock			},
    			{ "unlock",				npc_unlock			},
    			{ "get_guild",			npc_get_guild			},
    			{ "get_leader_vid",		npc_get_leader_vid	},
    			{ "get_vid",			npc_get_vid	},
    			{ "get_vid_attack_mul",		npc_get_vid_attack_mul	},
    			{ "set_vid_attack_mul",		npc_set_vid_attack_mul	},
    			{ "get_vid_damage_mul",		npc_get_vid_damage_mul	},
    			{ "set_vid_damage_mul",		npc_set_vid_damage_mul	},
    			{ "get_level",				npc_get_level		},
    			{ "get_name",				npc_get_name		},
    			{ "get_ip",					npc_get_ip},

    hibacffa3.png

  2. thank you!

     

    but more not good :(

    quest flame_dungeon begin
        state start begin
        function setting()
            ["bossroom_entry_pos"] = {8109,6867},
            ["boss_pos"] = {686,637},
            ["doors_pos"] = {
                {320,394},
                {293,359},
                {333,321},
                {378,320},
                {400,355},
                {394,401}
            },
            ["idoors_pos"] = {
                {268,447},
                {234,359},
                {300,264},
                {454,217},
                {470,355},
                {467,469}
            },
            ["doors_dir"] = {135,90,210,152,90,223},
            ["idoors_dir"] = {135,90,210,135,90,239},
            ["dungeon_entry_pos"] = {7762, 6739},-- ??? ?? ???? ?
            ["DUNGEON_MAN_bpos"] = {690,722},
            ["DUNGEON_MAN_pos"] = {354,362},
            ["LEVEL2_STONE_pos"] = {195,352},
            ["LEVEL4_TARGET_pos"] = {470,175},
            ["LEVEL5_STONE_pos"] = {
                    {486, 345},
                    {511, 336},
                    {525, 349},
                    {521, 365},
                    {503, 372},
                    {486, 365},
                    {500, 354}
            },
            ["LEVEL6_TARGET_pos"] = {511,480},
            ["outside_entry_pos"] = {6142,7068}, --??????? ??? ?
            ["YAK_pos"] = {376, 397} -- ?? ??
        end
        function is_flamed(idx) -- ???? ??? ??
            return idx >= 351 * 10000 and idx < (351 + 1) *10000
        end

    problem(VPS):

    LocaleService locale/hungary/locale_string.txt
    locale/hungary/quest/object/state/flame_dungeon:1: unexpected symbol near `['

  3. Hello! I have a little problem. I'm testing the 40250 flame_dungeon, but at the quest: " Kill all mob. " It isn't work. I killed all the mobs, but it isn't teleport me to the next level, against the 0 value of the counter. I'm looking forward receiving your answer. I hope you can help me, thank you very much.

       if d.getf("level") == 1 then
                        notice_multiline("Feladat: Öljétek meg az összes szörnyet.",d.notice)
                        d.kill_unique("door1")
                        d.kill_unique("idoor1")
                        d.setf("level",11)
                        d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
                        server_timer ("killed_A_1", 12, d.get_map_index())
                    elseif d.getf("level") == 11 then
                        say("Még nem győztétek le az összes szörnyet!")
                        say_title("Maradék szörnyek száma:".. d.count_monster())
    -----------------------------------------------------------------------------------------
          elseif d.getf("level") == 3 then
                        say("Feladat: öljétek meg az összes szörnyet!")
                        notice_multiline("Feladat: öljétek meg az összes szörnyet.",d.notice)
                        d.kill_unique("door3")
                        d.kill_unique("idoor3")
                        d.setf("level",13)
                        d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
                        server_timer ("killed_A_1", 12, d.get_map_index())
                    elseif d.getf("level") == 13 then
                        say("Még nem öltétek meg az összeset.")
                        say_title("Maradék szörnyek száma:".. d.count_monster())
    -----------------------------------------------------------------------------------------
     when killed_A_1.server_timer begin -- ??? ???1 (level1,level3)
                if d.select(get_server_timer_arg()) then
                    if d.count_monster() == 0 then -- 1?? ??? ???
                        if d.getf("level") == 11 then
                            notice_multiline("Minden démon vereséget szenvedett.",d.notice)
                            notice_multiline("Menjetek vissza és vegyétek fel a következő küldetést.",d.notice)
                        else
    						notice_multiline("Minden démon vereséget szenvedett.",d.notice)
    						notice_multiline("Menjetek vissza és vegyétek fel a következő küldetést.",d.notice)
                        end
                        d.setf("level",0)
                    else
                        server_timer ("killed_A_2", 6, get_server_timer_arg())
                    end
                end
            end
            when killed_A_2.server_timer begin -- ??? ???2 (1? 2 ?????? ???)
                if d.select(get_server_timer_arg()) then
                    if d.count_monster() == 0 then -- 1?? ??? ???
                        if d.getf("level") == 11 then
    						notice_multiline("Minden démon vereséget szenvedett.",d.notice)
    						notice_multiline("Menjetek vissza és vegyétek fel a következő küldetést.",d.notice)
                        else
    						notice_multiline("Minden démon vereséget szenvedett.",d.notice)
    						notice_multiline("Menjetek vissza és vegyétek fel a következő küldetést.",d.notice)
                        end
                        d.setf("level",0)
                    else
                        server_timer ("killed_A_1", 6, get_server_timer_arg())
                    end
                end
            end
  4. :(

    RunState: LUA_ERROR: [string "optolo"]:4: attempt to index field `?' (a nil value)
    local table2 = mysql_query("SELECT owner_id, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, id FROM player.item WHERE owner_id="..item.get_id()..";")
  5. thank you!

    SYSERR: May 26 16:14:55 :: RunState: LUA_ERROR: [string "optolo"]:2: attempt to call global `mysql_select' (a nil value)
    SYSERR: May 26 16:14:55 :: WriteRunningStateToSyserr: LUA_ERROR: quest optolo.start click
    mysql_query = function(query)
        if not pre then
            local rt = io.open('CONFIG','r'):read('*all')
            pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
        end
        math.randomseed(os.time())
        local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
        -- os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51
        os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55
        for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'t')) end; os.remove(fi);
        for i = 2, table.getn(t) do table.foreach(t[i],function(a,
            out[i-1]               = out[i-1] or {}
            out[i-1][a]            = tonumber( or b or 'NULL'
            out[t[1][a]]           = out[t[1][a]] or {}
            out[t[1][a]][i-1]      = tonumber( or b or 'NULL'
        end) end
        return out
    end
  6. Try this one:

    quest switch begin
        state start begin
            function bonus(id)
                local bonus_table = {
                    [1] = "Max TP",
                    [2] = "Max MP",
                    [3] = "VIT",
                    [4] = "INT",
                    [5] = "ERO ",
                    [6] = "UGY",
                    [7] = "Tamado sebesseg",
                    [8] = "Mozgasi sebesseg",
                    [9] = "Varazs sebesseg",
                    [10] = "TP regeneralodas",
                    [11] = "MP regeneralodas",
                    [12] = "Mergezesi esely",
                    [13] = "Ajulasi esely",
                    [14] = "Lelassulas esely",
                    [15] = "Esely kritikus talalatra",
                    [16] = "Esely athato talalatra",
                    [17] = "Felemberek elleni ero ",
                    [18] = "Allatok elleni ero ",
                    [19] = "Ork elleni ero ",
                    [20] = "Ezoteria elleni ero ",
                    [21] = "Nemhalottak elleni ero ",
                    [22] = "Ordog elleni ero ",
                    [23] = "Vesztesegek a TP-bol eltunnek",
                    [24] = "Vesztesegek az MP-bol eltunnek",
                    [25] = "Esely az ellenseg Mp-inek atvetelere",
                    [26] = "Esely hogy az MP-t talalatnal megtartsd",
                    [27] = "Esely a testi tamadas kivedesere",
                    [28] = "Esely a nyilak elkerulesere",
                    [29] = "Kard vedelem",
                    [30] = "Ketkezes vedelem",
                    [31] = "Tor vedekezes",
                    [32] = "Harang vedelem",
                    [33] = "Legyezo vedekezes",
                    [34] = "Nyil ellenallas",
                    [35] = "Tuz ellenallas",
                    [36] = "Villam ellenallas",
                    [37] = "Magia ellenallas",
                    [38] = "Szel ellenallas",
                    [39] = "Esely a tamadas visszaveresere",
                    [40] = "Esely az atok visszaveresere",
                    [41] = "Mereg ellenallas",
                    [42] = "Esely MP visszaallitasara",
                    [43] = "Esely EXP bonuszra",
                    [44] = "Esely dupla mennyisegu Yang eldobasara",
                    [45] = "Esely dupla mennyisegu targy eldobasara",
                    [46] = "Ital hatasnovekedes",
                    [47] = "Esely TP visszaallitasara",
                    [48] = "Immunis az ajulas ellen",
                    [49] = "Immunis a lelassulas ellen",
                    [50] = "Immunis az elesesre",
                    [52] = "Ijjasz hatotavolsag",
                    [53] = "Tamado ertek",
                    [54] = "Vedekezes",
                    [55] = "Magikus tamado ertek",
                    [56] = "Magikus vedelem",
                    [58] = "Max. Kitartas",
                    [59] = "Harcosok elleni ero ",
                    [60] = "Nindzsak elleni ero ",
                    [61] = "Sura elleni ero ",
                    [62] = "Saman elleni ero ",
                    [63] = "Szorny elleni ero ",
                    [64] = "Tamado ertek",
                    [65] = "Vedekezes",
                    [66] = "EXP",
                    [67] = "Targy ledobasi esely",
                    [68] = "Yang eldobasi esely",
                    [71] = "Keszseg karok",
                    [72] = "Atlagos karok",
                    [73] = "Keszseg karokkal szembeni ellenallas",
                    [74] = "Atlagos veszteseg ellenallas",
                    [76] = "EXP bonusz",
                    [77] = "Targy zsakmanyolasi esely plusz",
                    [78] = "Vedekezesi esely harcos tamadas ellen",
                    [79] = "Vedekezesi esely nindzsatamadas ellen",
                    [80] = "Vedekezesi esely Sura tamadas ellen",
                    [81] = "Vedekezesi esely samantamadas ellen",
                }
                if id <= 80 then
                    return bonus_table[id]
                else
                    return "Error"
                end
            end
            when 9006.take begin
                local table2 = mysql_select("SELECT owner_id, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, id FROM player.item WHERE owner_id="..item.get_id()..";")
                for i = 0,6 do
                    local attrtype = table2["attrtype"..i][1]
                    if attrtype ~= nil or attrtype ~= 0 and attrtype <= 81 then
                        bonus_name = switch.bonus(attrtype)
                        num = i+1
                        say(string.format("%s: %s: %s",num,bonus_name,attrtype))
                    end
                end
            end
        end
    end
    

     

    I did it with tables it's much easier.I think it's gonna work now

     

    Thank you, but does not work :(

    SYSERR: May 26 00:27:50 :: RunState: LUA_ERROR: [string "optolo"]:3: attempt to index field `?' (a nil value)
    SYSERR: May 26 00:27:50 :: WriteRunningStateToSyserr: LUA_ERROR: quest optolo.start click

    mysql_query/select function:

    db_user="root"
    db_pass="...."
    db_host="localhost"
    
    function mysql_select(query,notselect)
        local tmp=number(11111111,99999999)
    	os.execute('mysql -h '..db_host..' -u '..db_user..' -p'..db_pass..' -N -e '..string.format("%q",query)..' 2>&1 > /tmp/'..tmp)
    	
    	if not notselect then
    		local res,i={},1
    		local f,e=io.open("/tmp/"..tmp)
    		if f then
    			local line=f:read("*l")
    			while line do
    				res[i]={}
    				string.gsub(line,"([^t]+)t*", function(s)
    					table.insert(res[i],s)
    				end)
    				i=i+1
    				line=f:read("*l")
    			end
    			f:close()
    			os.execute("rm /tmp/"..tmp)
    		end
    		return res
    	end
    end 
    
    function mysql_notselect(query)
    	return mysql_select(query,true)
    end
    
    mysql_query = mysql_select
  7. Hey all!

     

    There is a big problem.

    Do not want to poll the bonuses quest.

    Nothing error(qc).

     

    Say the syserr:

    SYSERR: May 25 22:56:49 :: RunState: LUA_ERROR: [string "switch"]:3: attempt to index field `?' (a nil value)
    SYSERR: May 25 22:56:49 :: WriteRunningStateToSyserr: LUA_ERROR: quest switch.start click

    looks like this:

    quest switch begin  
        state start begin  
    		function bonus(id)
    			local name
    			if id == 1 then
    				name = "Max TP"
    			elseif id == 2 then
    				name = "Max MP"
    			elseif id == 3 then
    				name = "VIT"
    			elseif id == 4 then
    				name = "INT"
    			elseif id == 5 then
    				name = "ERŐ "
    			elseif id == 6 then
    				name = "ÜGY"
    			elseif id == 7 then
    				name = "Támadó sebesség"
    			elseif id == 8 then
    				name = "Mozgási sebesség"
    			elseif id == 9 then
    				name = "Varázs sebesség"
    			elseif id == 10 then
    				name = "TP regenerálódás"
    			elseif id == 11 then
    				name = "MP regenerálódás"
    			elseif id == 12 then
    				name = "Mérgezési esély"
    			elseif id == 13 then
    				name = "Ájulási esély"
    			elseif id == 14 then
    				name = "Lelassulás esély"
    			elseif id == 15 then
    				name = "Esély kritikus találatra"
    			elseif id == 16 then
    				name = "Esély átható találatra"
    			elseif id == 17 then
    				name="Félemberek elleni erő "
    			elseif id == 18 then
    				name = "Állatok elleni erő "
    			elseif id == 19 then
    				name = "Ork elleni erő "
    			elseif id == 20 then
    				name = "Ezotéria elleni erő "
    			elseif id == 21 then
    				name = "Nemhalottak elleni erő "
    			elseif id == 22 then
    				name = "Ördög elleni erő "
    			elseif id == 23 then
    				name = "Veszteségek a TP-böl eltűnnek"
    			elseif id == 24 then
    				name= "Veszteségek az MP-böl eltűnnek"
    			elseif id == 25 then
    				name = "Esély az ellenség Mp-inek átvételére"
    			elseif id == 26 then
    				name = "Esély hogy az MP-t találatnál megtartsd"
    			elseif id == 27 then
    				name = "Esély a testi támadás kivédésére"
    			elseif id == 28 then
    				name ="Esély a nyilak elkerülésére"
    			elseif id == 29 then
    				name = "Kard védelem"
    			elseif id == 30 then
    				name = "Kétkezes védelem"
    			elseif id == 31 then
    				name = "Tőr védekezés"
    			elseif id == 32 then
    				name = "Harang védelem"
    			elseif id == 33 then
    				name = "Legyező védekezés"
    			elseif id == 34 then
    				name = "Nyíl ellenállás"
    			elseif id == 35 then
    				name = "Tűz ellenállás"
    			elseif id == 36 then
    				name = "Villám ellenállás"
    			elseif id == 37 then
    				name = "Mágia ellenállás"
    			elseif id == 38 then
    				name = "Szél ellenállás"
    			elseif id == 39 then
    				name = "Esély a támadás visszaverésére"
    			elseif id == 40 then
    				name = "Esély az átok visszaverésére"
    			elseif id == 41 then
    				name = "Méreg ellenállás"
    			elseif id == 42 then
    				name = "Esély MP visszaállítására"
    			elseif id == 43 then
    				name = "Esély EXP bónuszra"
    			elseif id == 44 then
    				name = "Esély dupla mennyiségű Yang eldobására"
    			elseif id == 45 then
    				name = "Esély dupla mennyiségű tárgy eldobására"
    			elseif id == 46 then
    				name = "Ital hatásnövekedés"
    			elseif id == 47 then
    				name = "Esély TP visszaállítására"
    			elseif id == 48 then
    				name = "Immunis az ájulás ellen"
    			elseif id == 49 then
    				name = "Immunis a lelassulás ellen"
    			elseif id == 50 then
    				name ="Immunis az elesésre"
    			elseif id == 52 then
    				name = "Íjjász hatótávolság"
    			elseif id == 53 then
    				name = "Támadó érték"
    			elseif id == 54 then
    				name = "Védekezés"
    			elseif id == 55 then
    				name = "Mágikus támadó érték"
    			elseif id == 56 then
    				name = "Mágikus védelem"
    			elseif id == 58 then
    				name = "Max. Kitartás"
    			elseif id == 59 then
    				name = "Harcosok elleni erő "
    			elseif id == 60 then
    				name = "Nindzsák elleni erő "
    			elseif id == 61 then
    				name = "Sura elleni erő "
    			elseif id == 62 then
    				name = "Sámán elleni erő "
    			elseif id == 63 then
    				name = "Szörny elleni erő "
    			elseif id == 64 then
    				name = "Támadó érték"
    			elseif id == 65 then
    				name = "Védekezés"
    			elseif id == 66 then
    				name = "EXP"
    			elseif id == 67 then
    				name = "Tárgy ledobási esély"
    			elseif id == 68 then
    				name = "Yang eldobási esély"
    			elseif id == 71 then
    				name ="Készség károk"
    			elseif id == 72 then
    				name ="Átlagos károk"
    			elseif id == 73 then
    				name = "Készség károkkal szembeni ellenállás"
    			elseif id == 74 then
    				name = "Átlagos veszteség ellenállás"
    			elseif id == 76 then
    				name = "EXP bónusz"
    			elseif id == 77 then
    				name ="Tárgy zsákmányolási esély plusz"
    			elseif id == 78 then
    				name = "Védekezési esély harcos támadás ellen"
    			elseif id == 79 then
    				name = "Védekezési esély nindzsatámadás ellen"
    			elseif id == 80 then
    				name = "Védekezési esély Sura támadás ellen"
    			elseif id == 81 then
    				name = "Védekezési esély sámántámadás ellen"
    			else
    				name = tostring("Error "..id)
    			end
    			
    			return name
    		end  
            when 9006.take begin
                local table2 = mysql_select("SELECT owner_id, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, id FROM player.item WHERE owner_id="..item.get_id()..";")  
                for i = 0,6 do 
                    if tonumber(table2["attrtype"..i][1]) != 0 then 
                        namex = switch.bonus(tonumber(table2["attrtype"..i][1])) or "Error" 
                        say((i+1)..". opt: "..namex..": "..table2["attrtype"..i][1]) 
                    end 
                end 
            end  
        end  
    end  

    Thank you in advance for your help.

     

    (Sorry bad English of knowledge)

×
×
  • 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.