Jump to content

[Lua]Добавить NPC на карту и добавляем lua функции


Go-piratia

Recommended Posts

 
 
Между значениями должны быть табы [TAB]
 
 
//Serial NPC Name    NPC Type    Chrindex ID Show Mini-map   Coordinates starting point  Coordination Goal   NPC placement   Region  Region ID   NPC Script  info manage Test Status
1   New Npc 1   733 13  27125,38075 27125,38075 120 Owl City    1   0   NewNpc  0

 

Покупка предметов

function NewNpc ()
    Talk( 1, "Normal Seller" ) 
    Text( 1, "Trade", BuyPage) 
    Text( 1, "Nothing...",  CloseTalk)

    InitTrade()
        Weapon( ItemID  ) -- предмет появится на странице оружия
        Defence(    ItemID  ) -- предмет появится на странице одежды
        Other(  ItemID  ) -- предмет появится на странице другого
end

Обмен репутации

function NewRep()
    Talk( 1, "Exchanger Rep for Item!" )
    Text( 1, "Exchange Item", JumpPage, 2 )

    Talk(2,"Do you want to exchange YYYY REP for XXXX item?")

    InitTrigger()
    TriggerCondition( 1, HasCredit,YYYY )
    TriggerCondition( 1, HasLeaveBagGrid, 1 )
    TriggerCondition( 1, KitbagLock, 0 )
    TriggerAction( 1, DelRoleCredit,YYYY )
    TriggerAction( 1, GiveItem, XXXX,1,4 )
    TriggerFailure( 1, JumpPage, 3)

    Text(2,"XXXX Item for YYYY reputation points" ,MultiTrigger,GetMultiTrigger(),1)
    Talk( 3, "Sorry, you do not have the required Reputations Points. I cannot exchange it for you." )
end

Говорящий NPC

function ChaSay(role,target,text)
    local pkt = GetPacket()
    local tid = GetCharID( target )
    WriteCmd( pkt, 501 );
    WriteDword( pkt, tid );
    WriteString( pkt, text);
    SendPacket( role, pkt );
end
function cha_npc_timer(ignore, character,freq,time)
    local name = GetChaDefaultName (character)
    local target = find_target(character,300)
    local playername = GetChaDefaultName (target)
        ChaSay(target,character, "Э, " ..playername.. " сюда иди!" )
end
    
Hook:AddPostHook("cha_timer", cha_npc_timer, 2)

Разговоры с NPC по времени

Скрипт NPC:

function pn_FuncName()
InitTrigger()
TriggerCondition(1, CheckTime, 1400, 1800) -- NPC работает с 14:00 до 18:00
TriggerAction(1, JumpPage, 1) -- Если мы взаимодействуем с NPC в указанный интервал, то NPC работает с нами.
TriggerFailure(1, JumpPage, 2 ) -- В противном случае мы попадаем на страницу, где нам говорят, что в данное время нельзя "поговорить" с NPC.
Start(GetMultiTrigger(), 1)

Talk( 1, "Я буду с тобой говорить! " )
Talk( 2, "Я НЕ буду с тобой говорить! " )
end

Затем в functions.lua добавляем функцию CheckTime:

function CheckTime(character, i1, i2)
local hour   = tonumber(os.date("%H")) * 100
local minute = tonumber(os.date("%M"))
local check  = hour + minute
if check >= i1 and check <= i2 then
    return LUA_TRUE
end

return LUA_FALSE
end

Далее функцию следует добавить в список conditions в файле MissionSdk.lua

        elseif conditions[i].func == CheckTime then
            PRINT( "ConditionsTest: CheckTime")
            local ret = CheckTime(character, conditions[i].p1, conditions[i].p2)
            if ret ~= LUA_TRUE then
                PRINT( "ConditionsTest: CheckTime = false" )
                return LUA_FALSE
            end

 

Link to comment
Share on other sites

  • Go-piratia changed the title to [Lua]Добавить NPC на карту и добавляем lua функции

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chat

Chat

Please enter your display name

×
×
  • Create New...