Сделать стартовой Постучать в аську Добавить в Избранное
У Вас отключён javascript.
В данном режиме, отображение ресурса
браузером не поддерживается

Создание серверов Rappelz | Настройка и помощь в создании сервера | [KTSRZ.RU]

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Создание своего НПС

Сообщений 1 страница 9 из 9

1

Создание скрипта для нпс
Создание своего нпс очень даже и просто сперва сделаем для него скрипт.

function NPC_gnev_contact() -это привязка к нпс в бд которого мы вставим позже.   
set_npc_name(  "Gnev"  ) -название нпс в бд
end -это значение можно просто скопировать оно закрывает все те вещи что мы написали выше

function NPC_gnev_contact() -снова привязка

dlg_title( "Gnever" ) -основное названи нпс
dlg_text( "http://game-squad.net/" ) -то что нпс у нас говорит сюда можно вставить всё что угодно
dlg_menu("GnevNet - 50,000R", "Gnev()") -то что придлагает нам  нпс тоже можно вставить любое значение
dlg_menu( "@90010002", '' ) -воход из нпс
dlg_show() -просто вставляем пока это для нас неважно

end -сново закрываем выше значения

помните привязку "Gnev()" она пригодится для выполнения снятия гнева

function Gnev() -привязка к меню (что будет выполнять нпс)
local gold = get_value( "gold" ) -проверка на деньги (есть ли у вас та сумма денег в нашем случае 50к ) с разными нпс по разному у некоторых нпс всё это проходит в бд пример : нпс шоп

                if gold >= 50000 then -есть ли у вас та цена если есть то пропписывает автоматически баф на гнев на секунды 3
                                add_state( 5997, 200000, 1 ) - тот самый баф на 3 секунды
                                set_value( "gold", gold - 50000 ) - забирает у  вас 50к
                                update_gold_chaos() -  Ниже значения неважны просто копируем
                                NPC_gnev_contact() 
                                return

                   end -закрываем значения
                if gold < 50000 then -если же нету у вас 50к вос просто отпровляет в меню нпс
                                dlg_text( "http://game-squad.net/" )
                                dlg_menu("GnevNet - 50,000R", "Gnev()")
                                dlg_menu( "@90010002", '' )
                                dlg_show()
                                return
               
                   end -закрываем значения

end - закрываем скрипт

Вставление строки в бд
1)заходим в бд
2)создаём запрос
3)и вставляем туда строку

USE [Arcadia]
DELETE FROM [dbo].[NPCResource] WHERE (id = 11230) -айди нашего нпс (айди нпс анти гнев)
INSERT [dbo].[NPCResource] ([id], [text_id], [name_text_id], [race_id], [sexsual_id], [x], [y], [z], [face], [local_flag], [is_periodic], [begin_of_period], [end_of_period], [face_x], [face_y], [face_z], [model_file], [hair_id], [face_id], [body_id], [weapon_item_id], [shield_item_id], [clothes_item_id], [helm_item_id], [gloves_item_id], [boots_item_id], [belt_item_id], [mantle_item_id], [necklace_item_id], [earring_item_id], [ring1_item_id], [ring2_item_id], [motion_id], [is_roam], [roaming_id], [standard_walk_speed], [standard_run_speed], [walk_speed], [run_speed], [attackable], [offensive_type], [spawn_type], [chase_range], [regen_time], [level], [stat_id], [attack_range], [attack_speed_type], [hp], [mp], [attack_point], [magic_point], [defence], [magic_defence], [attack_speed], [magic_speed], [accuracy], [avoid], [magic_accuracy], [magic_avoid], [ai_script], [contact_script], [texture_group])  -эти значения нетрогаем VALUES (11230, -айди нпс 100011230,-текстовой айди он неважен так что просто копируем его(но про вставление обязательно нужно будет вписать) 105011230 -аналагично предыдущиму , 99, 0,- 2 предыдущих значения просто встовляем 152599 (кодината x), 7207(кодината y), 0, 30, 0, 0, - просто встовляем CAST(0x00008EAC00000000 AS DateTime), CAST(0x00008EAC00000000 AS DateTime) тоже просто вставляем, 5, -6, 17, N'npcdem_old.cob' значиния в переди это как выглядит нпс, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N'0', почти у всех нпс значения 0 N'NPC_gnev_contact()', -1) прикрепляем нпс к скрипту (для пользователей 2012 после значения -1 ставим через запитую 0)

+1

2

а скрипт в бд делать или где???

0

3

sasori777 написал(а):

а скрипт в бд делать или где???

сам скрипт в game_bin
запрос уже в SQL

0

4

Народ подскажите пожалуйста как мне узнать ид нпц на серве? забацыл сервер вроде норм но не могу ни как удалить старых нпс, они уже стояли при создании серва. Как мне определить их ид ???

Отредактировано Gradibor (2012-11-09 01:07:25)

0

5

По координатам или конекту на скрипт

0

6

IWillTearYou написал(а):

По координатам или конекту на скрипт
Подпись автора
Иногда друзья - самые последние люди, которым можно доверять.

А по подробнее можно?

0

7

Подойди к нпс напиши в чат /position а по базе ищи х и y..Они могут быть меньше/больше на 5-10..Ищи рядом

0

8

Возьмите к примеру НПС шоп из All guide ByAndreas
Откроем npc.sql
DELETE FROM [dbo].[NPCResource] WHERE (id = 9934) OR (id = 9935) OR (id = 9936) OR (id = 9937) тоесть (id = ****) это id строки на которой написан нпс. если мы создаем нпс мы должны дать ему id строчки на которой он будет написан(он может быть любой)но чтоб избежать ошибок в запросе желательно оставить эту строчку а id строчек изменить на id под которыми будет ваш нпс.
Далее там есть 4 строчки , это информация о вашем будующем нпс ну это легко(только не перестарайтесь)И незабудьте поменять первые значения на значения которые вы указали в первой строчке(каждое название стоит под определеным id) можно указать его расположение командой "/position" подойдите в любое место в игре и введите эту команду(и в чате появятся координаты И НЕ ЗАБУДЬТЕ ПЕРВЫЙ "x" ВТОРОЙ "y")))))
Теперь к назначению нпс (ОН БУДЕТ ПРОДОВАТЬ ШОП) Откроем гайд который находиться в этой папке "НПС шоп" и приступим :
function NPC_aio_shop_init()- надо изменить на другое например Nps_rinei()
cprint( "AiO Shop" )
set_npc_name( "All in One Shop" )
end

function NPC_aio_shop_contact() - надо изменить на другое например Nps_rinei()
и вписать в nps.sql в пред последнее значение и это будет выглядеть так:
N'NPC_rinei()

dlg_title( "Supermarket" )
dlg_text( "Welcome to the All in One Shop. Please select a category" ) - текст который будет писаться типо это говорит тебе нпс в рамочке (только на английском потомучто русский язык неподдерживаться).

Это меню которое будет показываться при нажатии по нему...

dlg_menu( "Usables", "open_market( 'cs_usable' )" ) "Usavles "- это название 'cs_usable' - это название базы вещей в shops.sql (откройте и удалите все строчки ктоме 1 и измените ее под название вашей базы(например не 'cs_usable' а 'cs_rinei') и естественно подставляете в начале (N')-N'cs_rinei... потом найдите строчку с id предмета (и для удобства измените на "0" потом потом определить легче будет где забитая строка где нет) когда вы это сделали найдите id вещей которые вы туда хотите кинуть ) теперь найдем 1 значение оно должно быть 30000(это значение на каждой строчке изменять на 1 тоесть 30001-30002-30003 и тд)...
Создаем много строчек (выделите строку и нажмите ctrl+c и потом вставляйте ниже нее остальные и таким образом редактируйте)
dlg_menu( "Cash Shop Decoration", "open_market( 'cs_deco' )" )
dlg_menu( "Cash Shop Equipment", "open_market( 'cs_equip' )" )
dlg_menu( "Cash Shop Pet Items", "open_market( 'cs_pet' )" )
dlg_menu( "Cash Shop Random Boxes", "open_market( 'cs_random' )" )
dlg_menu( "Stone Shop", "open_market( 'cs_stones' )" )
dlg_menu( "Crafting Shop", "open_market( 'cs_crafting' )" )
dlg_menu( "Pets", "open_market( 'cs_pets' )" )

dlg_menu( "Rank 5 Equipment", "open_market( 'cs_rank5' )" )
dlg_menu( "Rank 6 Equipment", "open_market( 'cs_rank6' )" )
dlg_menu( "Rank 7 Equipment", "open_market( 'cs_rank7' )" )

dlg_menu( "Buff", "buff_select_player()" )
dlg_menu( "Pet Buff", "buff_select_creature()" )

dlg_menu( "@90010002", '' )
dlg_show()

end

function buff_select_player()
dlg_text("+100500 ")
dlg_menu("Physical Attack - 20,000R", "buff_player(1007)")-Physical Attack - название ) (1007)id бафа
dlg_menu("Magical Attack - 20,000R", "buff_player(1008)")
dlg_menu("Physical Defense - 20,000R", "buff_player(1009)")
dlg_menu("Magical Defense - 20,000R", "buff_player(1010)")
dlg_menu("Attack Speed - 20,000R", "buff_player(1011)")
dlg_menu("Cast Speed - 20,000R", "buff_player(1012)")
dlg_menu("Movement Speed - 20,000R", "buff_player(1013)")
dlg_menu("Get All Buffs - 140,000R", "buff_player(0)")
dlg_menu( "Goodbuy", '' )
dlg_show()

end

function buff_select_creature()
dlg_text("1")
dlg_menu("Physical Attack - 20,000R", "buff_creature(1007)")- тоже самое
dlg_menu("Magical Attack - 20,000R", "buff_creature(1008)")
dlg_menu("Physical Defense- 20,000R", "buff_creature(1009)")
dlg_menu("Magical Defense- 20,000R", "buff_creature(1010)")
dlg_menu("Attack Speed - 20,000R", "buff_creature(1011)")
dlg_menu("Cast Speed - 20,000R", "buff_creature(1012)")
dlg_menu("Movement Speed - 20,000R", "buff_creature(1013)")
dlg_menu("Get All Buffs - 140,000R", "buff_creature(0)")
dlg_menu( "Goodbuy", '' )
dlg_show()
end

function buff_player(buffcode)

local gold = get_value("gold")
gold = tonumber(gold)
if buffcode == 0 then
if gold >= 140000 then
sv("gold", gold-140000)
update_gold_chaos()
add_state(1007, 18, 900000) это мощьность бафов время и id его
add_state(1008, 18, 900000)
add_state(1009, 18, 900000)
add_state(1010, 18, 900000)
add_state(1011, 18, 900000)
add_state(1012, 18, 900000)
add_state(1013, 18, 900000)
buff_select_player()
else
dlg_text("Sorry, you do not have enough money.")
dlg_menu("Goodbye!", "")
dlg_show()
end
else
if gold >= 20000 then
sv("gold", gold-20000)
update_gold_chaos()
add_state("" .. buffcode .. "", 18, 900000)
buff_select_player()
else
dlg_text("Sorry, you do not have enough money.")
dlg_menu("Goodbye!", "")
dlg_show()
end
end
end

function buff_creature(buffcode)

local gold = get_value("gold")
gold = tonumber(gold)
if buffcode == 0 then
if gold >= 140000 then
sv("gold", gold-140000)
update_gold_chaos()
add_cstate(1007, 18, 900000)
add_cstate(1008, 18, 900000)
add_cstate(1009, 18, 900000)
add_cstate(1010, 18, 900000)
add_cstate(1011, 18, 900000)
add_cstate(1012, 18, 900000)
add_cstate(1013, 18, 900000)
buff_select_creature()
else
dlg_text("Sorry, you do not have enough money.")
dlg_menu("Goodbye!", "")
dlg_show()
end
else
if gold >= 20000 then
sv("gold", gold-20000)
update_gold_chaos()
add_cstate("" .. buffcode .. "", 18, 900000)
buff_select_creature()
else
dlg_text("Sorry, you do not have enough money.")
dlg_menu("Goodbye!", "")
dlg_show()
end
end
end

0

9

+ тебе

0



создать форум