Go-piratia Posted October 30, 2023 Share Posted October 30, 2023 Идем в файлы нужной нам карты resourse/MapName/MapNameNpc.txt: Между значениями должны быть табы [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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.