Odpowiedz 
Lua system ustawiania postaci przy pierwszym zalogowaniu
07-04-2011, 12:09 PM (Ten post był ostatnio modyfikowany: 11-04-2011 01:52 AM przez Meritus.)
Post: #1
Lua system ustawiania postaci przy pierwszym zalogowaniu
Witam.

Słowem wstępu powiem, że system ustawiania postaci po pierwszym zalogowaniu na serwer w lua daje ogromne możliwości konfiguracyjne. Zaimplementowanie tego systemu nadpisuje działanie accountmanagera ze strony automatycznie.

Do pliku triggers.xml dodajmy:

Kod PHP:
<trigger id="KOLEJNY_NUMER" type="ON_LOGIN" script="triggers/onlogin.lua" /> 

Tworzymy w plik onlogin.lua w katalogu /actions/scripts/triggers/

Wpisujemy do niego:

Kod PHP:
function onTrigger(cidthing1fromposthing2topostriggertext)
--
Rozdawanie EQ przy starcie
    
if trigger.optionid == 0 then -- Pierwsze zalogowanie do gry danego gracza
        LUAsetFirstLoginPlayer
(cidFIRST_LOGIN)
    
end
end 

Następnie dodajemy w global.lua:

Przy sekcji makr nawanych ID przedmiotów:

Kod PHP:
ID_STUDDED_HELMET 3314
ID_WOLVES_TOOTH_CHAIN 
2950
ID_BACKPACK 
2792
ID_LEATHER_ARMOR 
3499
ID_RAPIER 
3210
ID_WOODEN_SHIELD 
3350
ID_LEATHER_LEGS 
3497
ID_LEATHER_BOOTS 
3490
ID_POWER_RING 
2988 

Na dole pliku global.lua:

Kod PHP:
function LUAsetFirstLoginPlayer(cidplayer_config)

    
    
doPlayerClearItems(cid)
    
local player_vocation getPlayerVocation(cid)
    for 
_obj in pairs(player_config) do
        if (
player_vocation == _then
            
if (setPlayer(cidobj.player_attributes) == 1then
                
for __obj_items in pairs(obj.player_items) do
                    
doPlayerAddItemTable(cidobj_items __)
                
end
                doTeleportThing
(cidobj.start_position)
                return 
true
            
else
                
log(cid"Blad w ustawianiu skilli")
                return 
false
            end
        end
    end
    log
(cid,22,'Profesja nie zostala skonfigurowana')
    return 
false
end

FIRST_LOGIN 
= {
    [
ROOKSLAYER] = {
        
start_position = {x=100y=100z=7},
        
player_attributes = {
            
level 1,
            
experience 0,
            
magiclevel 0,
            
health 150,
            
mana 0,
            
vocation 0,
            
skills = {
                
10, -- SKILL_FIST
                10
, -- SKILL_CLUB
                10
, -- SKILL_SWORD
                10
, -- SKILL_AXE
                10
, -- SKILL_DISTANCE
                10
, -- SKILL_SHIELD
                10
, -- SKILL_FISHING
            
},
        },
        
player_items = {
            [
SLOT_AMMO] = {
                
id ID_POWER_RING,
                
count 300000,
            },
            [
SLOT_ARMOR] = {
                
id ID_LEATHER_ARMOR,
            },
            [
SLOT_BACKPACK] = {
                
id ID_BACKPACK,
                
contain = {
                    {
id ID_ROPE},
                },
            },
            [
SLOT_FEET] = {
                
id ID_LEATHER_BOOTS,
            },
            [
SLOT_HEAD] = {
                
id ID_STUDDED_HELMET,
            },
            [
SLOT_LEFT] = {
                
id ID_WOODEN_SHIELD,
            },
            [
SLOT_LEGS] = {
                
id ID_LEATHER_LEGS,
            },
            [
SLOT_NECKLACE] = {
                
id ID_WOLVES_TOOTH_CHAIN,
            },
            [
SLOT_RIGHT] = {
                
id ID_RAPIER,
            },
            --[
SLOT_RING] = {
            --    
id ID_POWER_RING,
            --    
count 300000,
            --}
        }
    }



UWAGA!

W global.lua powinny znajdować się niezbędne makro "ROOKSLAYER" o wartości 0 oraz ustawić pozycję w start_position konfiguratorze. POZYCJA 100:100:7 MUSI BYĆ NA MAPIE (CHOCIAŻ MIAŁ BY BYĆ TO 1 KWADRACIK)

Pozdrawiam
Meritus.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości