Для входа на форум нажмите здесь
Новые комментарии
Подарки для новичков
Автор темы: Кланикус
Дата создания: 06.07.2015 18:01
Аватар для Suh_renamed_63976_15052020
Старожил
Регистрация:
23.11.2006
Re: Подарки для новичков
Сообщение от реостат:
притом для всякого скрипта нужен интерпретатор.
Ну нельзя же быть столь тупым? У Л2 есть механизм скриптовых эвентов, на подобие плагинов для браузера. Они не трогая и не меняя исходный код клиента и сервера позволяют минимальными силами расширить функционал и так же легко убрать этот функционал. Тут мы это называем скриптом, но это не меняет сути дела. Это уже готовый отработанный механизм, не требующий внесения новых сущностей в базу и бизнес логику. Это удобно и практично. При чём тут интерпретаторы? Для этой цели не обязательно вводить некий псевдоязык и его интерпретатор (хотя и такие варианты существуют и возможны, я не знаю каким вариантом пользуются в л2). Это всего лишь механизм расширения функционала. Точка. Допёрло? Или надо ещё какими-то путями пояснять?
Чем же это отличается от обновления дроп листа и логики выдачи предметов? Обновлением, мать его, дроп листа и механизма выдачи предметов. В коде существует механизм, который выдаёт с каждого моба тебе какой-то дроп из допустимого списка и по особому механизму выдаёт тебе адену. Это уже заложено в коде. Изначально.
Почему бы не внести сюда ещё и код с буковками? А потому что мы не хотим МЕНЯТЬ исходный код и механизм дропа и добавлять туда что-то типа вызова метода "проверь шанс можно ли выбить фигню" и "выпади херня". Мы хотим добавить функционал независимый и легко удаляемый. По текущему механизму только адена имеет свой особый механизм работы и спойл. А ты предлагаешь для каждого эвента менять этот код и потом убирать. Зачем? Не проблема добавить новый итем. Проблема добавить итем с ОСОБЫМ поведением, которое увы необходимо для эвентов.

Dreadnought фришардер 78+ (возможно он ещё там!)
Warrior 28+ L2 Classic Maphr (очевидно будущий ВЛ)
HotSpot - Elven Oracle 32+ L2 Classic Gran Kain
I need a miracle and not someone's charity.
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от Suh:
Ну нельзя же быть столь тупым? У Л2 есть механизм скриптовых эвентов, на подобие плагинов для браузера. Они не трогая и не меняя исходный код клиента и сервера позволяют минимальными силами расширить функционал и так же легко убрать этот функционал. Тут мы это называем скриптом, но это не меняет сути дела. Это уже готовый отработанный механизм, не требующий внесения новых сущностей в базу и бизнес логику. Это удобно и практично. При чём тут интерпретаторы? Для этой цели не обязательно вводить некий псевдоязык и его интерпретатор (хотя и такие варианты существуют и возможны, я не знаю каким вариантом пользуются в л2). Это всего лишь механизм расширения функционала. Точка. Допёрло? Или надо ещё какими-то путями пояснять?
Сообщение от реостат:
и вообще,сдается мне,тут скрипт является для многих какой-то всемогущей таинственной сущностью,без которой ничего бы не получилось.скрипт-тот же самый набор команд что и другие подпрограммы,он так и называется по-русски,сценарий.ты тупо подключаешь модуль.все.

Сообщение от Suh:
Почему бы не внести сюда ещё и код с буковками? А потому что мы не хотим МЕНЯТЬ исходный код и механизм дропа и добавлять туда что-то типа вызова метода "проверь шанс можно ли выбить фигню" и "выпади херня".
зачем менять?механизм-он и есть механизм.ты его расширяешь,добавляя всего лишь расчет буковки.или для этого нужно очень сильное колдунство?не поймешь тебя...в одном месте ты элегантно,как вы выражаетесь,расширяешь функционал надстройками из скриптов,но никак не можешь натравить уже существующий метод на еще одно поле.ах,ну да,это же не элегантно!
Сообщение от Suh:
А ты предлагаешь для каждого эвента менять этот код и потом убирать.
где такое предлагал?я предлагал ввести поле "квест-итем" и обрабатывать события по уже отлаженному механизму.в чем сложность?
Сообщение от Suh:
Проблема добавить итем с ОСОБЫМ поведением, которое увы необходимо для эвентов.
не проблема.натрави механизм адены на итем.и я до сих пор не увидел ответа,для чего нужно ОСОБОЕ поведение.

а вообще второй курс максимум.и даже если ты получил диплом,то это означает,что 3 курса были прогулены.
Re: Подарки для новичков
Сообщение от реостат:
не вижу никаких проблем добавить в дроп-лист итем "буковка".
Если конечно не брать в расчет лишние операции с БД и процедур для обработки этих букв вместо написания одной единственной процедуры-события "при смерти моба"


Сообщение от реостат:
или все же шанс и кол-во адены расчитывается в другом месте
Кол-во записано в виде разброса, а шанс статичный. В случае с буковками, если они дропаются как писал мист, шанс является динамическим.

Объясню на примере фабрики где я работаю - для того чтобы дать возможность кому то пользоваться новым отчетом, который только что сделали, мы загружаем его как внешний(аналогия скрипта), а не зашиваем его в конфу с последующим рестартом всей базы и выкидыванием 300 работающих человек из нее. Потому что даже если так сделать один раз, то при любом изменении отчета перезагружать базу придется снова.
Аватар для Zergatul_renamed_660253_30112020
Мастер
Регистрация:
17.03.2009
Re: Подарки для новичков
Сообщение от реостат:
где такое предлагал?я предлагал ввести поле "квест-итем" и обрабатывать события по уже отлаженному механизму.в чем сложность?
похоже, что и квест итемы прописаны в скриптах
кусочек с ai.obj:
Код:
class 0 monstereye_searcher : wizard_pa_ddmagic2
handler 9 669	//  MY_DYING
	variable_begin
		"always_list"
		"c1"
		"code_info"
		"i0"
		"i9"
		"last_attacker"
		"lparty"
		"member"
		"random1_list"
		"target"
		"myself"
		"_choiceN"
		"_code"
		"_from_choice"
	variable_end

	push_event	//  always_list
	push_const 760			//always_list
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  gg
	push_const 704			//AllocCodeInfoList
	add
	fetch_i			//AllocCodeInfoList
	func_call 268435466	//  func[AllocCodeInfoList]
	assign
	shift_sp -1
	push_event	//  random1_list
	push_const 752			//random1_list
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  gg
	push_const 704			//AllocCodeInfoList
	add
	fetch_i			//AllocCodeInfoList
	func_call 268435466	//  func[AllocCodeInfoList]
	assign
	shift_sp -1
	push_event	//  target
	push_const 96			//target
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  last_attacker
	push_const 728			//last_attacker
	add
	fetch_i
	assign
	shift_sp -1
	push_event	//  always_list
	push_const 760			//always_list
	add
	fetch_i			//Fetch Base pointer
	push_const 0			//unary->INTEGER_CONST
	push_event	//  target
	push_const 96			//target
	add
	fetch_i
	func_call 318898176	//  func[SetInfo]
	shift_sp -2
	shift_sp -1
L150047
	push_event	//  gg
	push_const 704			//IsNull
	add
	fetch_i			//IsNull
	push_event	//  code_info
	push_const 768			//code_info
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  always_list
	push_const 760			//always_list
	add
	fetch_i			//Fetch pointer
	func_call 318767105	//  func[Next]
	assign
	fetch_i
	func_call 268501009	//  func[IsNull]
	shift_sp -1
	push_const 0			//unary->INTEGER_CONST
	equal
	branch_false L150048
	push_event	//  code_info
	push_const 768			//code_info
	add
	fetch_i			//code
	push_const 52			//code
	add
	fetch_i4
	push_reg_sp
	fetch_i			//select_case compare
	push_const 0			//select_case
	equal
	branch_false L150051
L150050
	push_event	//  myself
	push_const 784			//SetCurrentQuestID
	add
	fetch_i			//SetCurrentQuestID
	push_const 330			//unary->INTEGER_CONST
	func_call 234946666	//  func[SetCurrentQuestID]
	shift_sp -1
	shift_sp -1
	push_event	//  target
	push_const 96			//target
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  code_info
	push_const 768			//code_info
	add
	fetch_i			//Fetch pointer
	func_call 301989889	//  func[RandomSelectOne]
	assign
	shift_sp -1
	push_event	//  gg
	push_const 704			//IsNull
	add
	fetch_i			//IsNull
	push_event	//  target
	push_const 96			//target
	add
	fetch_i
	func_call 268501009	//  func[IsNull]
	shift_sp -1
	push_const 0			//unary->INTEGER_CONST
	equal
	push_reg_sp
	fetch_i			//and list
	branch_false L150052
	push_event	//  myself
	push_const 784			//DistFromMe
	add
	fetch_i			//DistFromMe
	push_event	//  target
	push_const 96			//target
	add
	fetch_i
	func_call 234946649	//  func[DistFromMe]
	shift_sp -1
	push_const 1500			//unary->INTEGER_CONST
	less_equal
	and
L150052
	branch_false L150054
L150053
	push_event	//  c1
	push_const 424			//c1
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  myself
	push_const 784			//GetLastAttacker
	add
	fetch_i			//GetLastAttacker
	func_call 234881159	//  func[GetLastAttacker]
	assign
	shift_sp -1
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i			//master
	push_const 2760			//master
	add
	fetch_i
	branch_false L150056
L150055
	push_event	//  c1
	push_const 424			//c1
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i			//master
	push_const 2760			//master
	add
	fetch_i
	assign
	shift_sp -1
L150056
	push_event	//  gg
	push_const 704			//HaveMemo
	add
	fetch_i			//HaveMemo
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 330			//unary->INTEGER_CONST
	func_call 268566578	//  func[HaveMemo]
	shift_sp -2
	push_const 1			//unary->INTEGER_CONST
	equal
	push_reg_sp
	fetch_i			//and list
	branch_false L150057
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1420			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_const 1			//unary->INTEGER_CONST
	equal
	and
	push_reg_sp
	fetch_i			//and list
	branch_false L150057
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1424			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1425			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1429			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1430			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1433			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1437			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1438			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1441			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	add
	push_const 5			//unary->INTEGER_CONST
	less
	and
	push_reg_sp
	fetch_i			//and list
	branch_false L150057
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1439			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_const 1			//unary->INTEGER_CONST
	equal
	and
	push_reg_sp
	fetch_i			//and list
	branch_false L150057
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_const 30			//unary->INTEGER_CONST
	less
	and
L150057
	branch_false L150059
L150058
	push_event	//  i0
	push_const 280			//i0
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  gg
	push_const 704			//Rand
	add
	fetch_i			//Rand
	push_const 100			//unary->INTEGER_CONST
	func_call 268500997	//  func[Rand]
	shift_sp -1
	assign
	shift_sp -1
	push_event	//  i0
	push_const 280			//i0
	add
	fetch_i
	push_const 77			//unary->INTEGER_CONST
	less
	branch_false L150061
L150060
	push_event	//  myself
	push_const 784			//GetCurrentTick
	add
	fetch_i			//GetCurrentTick
	func_call 234881059	//  func[GetCurrentTick]
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i			//quest_last_reward_time
	push_const 1620			//quest_last_reward_time
	add
	fetch_i4
	sub
	push_const 1			//unary->INTEGER_CONST
	greater
	branch_false L150063
L150062
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i			//quest_last_reward_time
	push_const 1620			//quest_last_reward_time
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  myself
	push_const 784			//GetCurrentTick
	add
	fetch_i			//GetCurrentTick
	func_call 234881059	//  func[GetCurrentTick]
	assign4
	shift_sp -1
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_const 29			//unary->INTEGER_CONST
	equal
	branch_false L150065
L150064
	push_event	//  myself
	push_const 784			//GiveItem1
	add
	fetch_i			//GiveItem1
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	push_const 1			//unary->INTEGER_CONST
	func_call 235077762	//  func[GiveItem1]
	shift_sp -3
	shift_sp -1
	push_event	//  myself
	push_const 784			//SoundEffect
	add
	fetch_i			//SoundEffect
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
S19122.	"ItemSound.quest_middle"
	push_string S19122
	func_call 235012344	//  func[SoundEffect]
	shift_sp -2
	shift_sp -1
	jump L150066
L150065
	push_event	//  myself
	push_const 784			//GiveItem1
	add
	fetch_i			//GiveItem1
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	push_const 2			//unary->INTEGER_CONST
	func_call 235077762	//  func[GiveItem1]
	shift_sp -3
	shift_sp -1
	push_event	//  myself
	push_const 784			//SoundEffect
	add
	fetch_i			//SoundEffect
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
S19123.	"ItemSound.quest_itemget"
	push_string S19123
	func_call 235012344	//  func[SoundEffect]
	shift_sp -2
	shift_sp -1
L150066
L150063
	jump L150067
L150061
	push_event	//  i0
	push_const 280			//i0
	add
	fetch_i
	push_const 97			//unary->INTEGER_CONST
	less
	branch_false L150069
L150068
	push_event	//  myself
	push_const 784			//GetCurrentTick
	add
	fetch_i			//GetCurrentTick
	func_call 234881059	//  func[GetCurrentTick]
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i			//quest_last_reward_time
	push_const 1620			//quest_last_reward_time
	add
	fetch_i4
	sub
	push_const 1			//unary->INTEGER_CONST
	greater
	branch_false L150071
L150070
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i			//quest_last_reward_time
	push_const 1620			//quest_last_reward_time
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  myself
	push_const 784			//GetCurrentTick
	add
	fetch_i			//GetCurrentTick
	func_call 234881059	//  func[GetCurrentTick]
	assign4
	shift_sp -1
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_const 28			//unary->INTEGER_CONST
	equal
	branch_false L150073
L150072
	push_event	//  myself
	push_const 784			//GiveItem1
	add
	fetch_i			//GiveItem1
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	push_const 2			//unary->INTEGER_CONST
	func_call 235077762	//  func[GiveItem1]
	shift_sp -3
	shift_sp -1
	push_event	//  myself
	push_const 784			//SoundEffect
	add
	fetch_i			//SoundEffect
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
S19124.	"ItemSound.quest_middle"
	push_string S19124
	func_call 235012344	//  func[SoundEffect]
	shift_sp -2
	shift_sp -1
	jump L150074
L150073
	push_event	//  gg
	push_const 704			//OwnItemCount
	add
	fetch_i			//OwnItemCount
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	func_call 268566576	//  func[OwnItemCount]
	shift_sp -2
	push_const 29			//unary->INTEGER_CONST
	equal
	branch_false L150076
L150075
	push_event	//  myself
	push_const 784			//GiveItem1
	add
	fetch_i			//GiveItem1
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	push_const 1			//unary->INTEGER_CONST
	func_call 235077762	//  func[GiveItem1]
	shift_sp -3
	shift_sp -1
	push_event	//  myself
	push_const 784			//SoundEffect
	add
	fetch_i			//SoundEffect
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
S19125.	"ItemSound.quest_middle"
	push_string S19125
	func_call 235012344	//  func[SoundEffect]
	shift_sp -2
	shift_sp -1
	jump L150077
L150076
	push_event	//  myself
	push_const 784			//GiveItem1
	add
	fetch_i			//GiveItem1
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
	push_const 1440			//unary->INTEGER_CONST
	push_const 3			//unary->INTEGER_CONST
	func_call 235077762	//  func[GiveItem1]
	shift_sp -3
	shift_sp -1
	push_event	//  myself
	push_const 784			//SoundEffect
	add
	fetch_i			//SoundEffect
	push_event	//  c1
	push_const 424			//c1
	add
	fetch_i
S19126.	"ItemSound.quest_itemget"
	push_string S19126
	func_call 235012344	//  func[SoundEffect]
	shift_sp -2
	shift_sp -1
L150077
L150074
L150071
L150069
L150067
L150059
L150054
	jump L150049
	jump L150078
L150051
L150078
L150049
	shift_sp -1
	jump L150047
L150048
	push_event	//  code_info
	push_const 768			//code_info
	add
	push_reg_sp
	fetch_i			//expr =
	push_event	//  random1_list
	push_const 752			//random1_list
	add
	fetch_i			//Fetch pointer
	func_call 318767106	//  func[RandomSelectOne]
	assign
	shift_sp -1
	push_event	//  gg
	push_const 704			//IsNull
	add
	fetch_i			//IsNull
	push_event	//  code_info
	push_const 768			//code_info
	add
	fetch_i
	func_call 268501009	//  func[IsNull]
	shift_sp -1
	push_const 0			//unary->INTEGER_CONST
	equal
	branch_false L150080
L150079
	push_event	//  code_info
	push_const 768			//code_info
	add
	fetch_i			//code
	push_const 52			//code
	add
	fetch_i4
L150082
L150081
	shift_sp -1
L150080
	call_super
handler_end

class_end

Сообщение от евгений11:
мне только 14, но в свои 8 я гнул атебальд =(
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от XDominator:
Если конечно не брать в расчет лишние операции с БД и процедур для обработки этих букв вместо написания одной единственной процедуры-события "при смерти моба"
зачем вообще нужны дроп-листы,если можно написать единственную процедуру "при смерти моба"?
Сообщение от XDominator:
Потому что даже если так сделать один раз, то при любом изменении отчета перезагружать базу придется снова.
как бы ивенты всегда сопровождаются перезагрузкой сервера.

Сообщение от XDominator:
Кол-во записано в виде разброса
поподробней,плиз.как узнать конкретное значение?потому что ответ прямо повлияет на следующий вопрос
Сообщение от XDominator:
а шанс статичный. В случае с буковками, если они дропаются как писал мист, шанс является динамическим.
что мешает сделать шанс динамичным,как и в случае с аденой.написать в виде разброса,например.
Аватар для Suh_renamed_63976_15052020
Старожил
Регистрация:
23.11.2006
Re: Подарки для новичков
Сообщение от реостат:
а вообще второй курс максимум.и даже если ты получил диплом,то это означает,что 3 курса были прогулены.
Видимо третьекурсник закукарекал Мог бы так откровенно-то не палиться. 6 лет работаю программистом. Такие дела.
Сообщение от реостат:
натрави механизм адены на итем
О мой скотче. Ну зачем? Логика работы выпадения адены - > определить выпадет или нет. Если да, то взять случайное значение между адена.мин и адена.макс. И как это будет работать с буковками? Как этот механизм будет выбирать какую буковку выбить без допиливания в него костылей?

Сообщение от реостат:
подпрограммы
Сообщение от реостат:
сценарий.ты тупо подключаешь модуль.все.
Это у тебя в лабах по дельфи так) Да и словечки характерные, как у твоего 70 летнего препода.

Добавить новое поле в базу => изменить модель данных => добавить дополнительную логику в существующий движок. Оттестировать всё это. Ну вот зачем? Для того чтобы пару новых плагинов на файрфокс поставить, тоже будем добавлять новые либы или менять его исходники, пересобирать его и выпускать новую версию? Неужели так сложно понять архитектурную разницу?
Здесь и далее для упоротых, все эти эвенты сделаны на основе механизма запуска скриптов на различные игровые события, не затрагивая исходный движок, а лишь дополняя его. Хотя я не знаю сколько раз нужно привести пример с плагинами, чтобы неуч понял.

Dreadnought фришардер 78+ (возможно он ещё там!)
Warrior 28+ L2 Classic Maphr (очевидно будущий ВЛ)
HotSpot - Elven Oracle 32+ L2 Classic Gran Kain
I need a miracle and not someone's charity.
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от Zergatul:
похоже, что и квест итемы прописаны в скриптах
кусочек с ai.obj:
спасибо.все как я и говорил,не какой-то там отдельный "внешний ивентовый скрипт",а полноценный список дропа.все итемы указаны.

Добавлено через 6 минут
Сообщение от Suh:
6 лет работаю программистом.
как грится,возраст еще ни о чем не говорит.если человек дожил до 90 лет,то это не означает,что он стал мудрецом.он может быть просто старым дураком.
Сообщение от Suh:
О мой скотче. Ну зачем? Логика работы выпадения адены - > определить выпадет или нет. Если да, то взять случайное значение между адена.мин и адена.макс. И как это будет работать с буковками? Как этот механизм будет выбирать какую буковку выбить без допиливания в него костылей?
этим вопросом все сказано.
Сообщение от Suh:
Добавить новое поле в базу => изменить модель данных => добавить дополнительную логику в существующий движок
ты точно не имеешь понятия о предмете.если у тебя при добавлении поля в бд меняется логика,то я даже не знаю о чем тут еще говорить.

Добавлено через 2 минуты
Сообщение от Suh:
Да и словечки характерные, как у твоего 70 летнего препода.
да не.ларчик просто открывается.при загугле слова "скрипт" выдается результат в википедии на страницу "Сценарный язык".чтобы даже маленький мальчик смог понять о чем речь.но ты не маленький мальчик,я уже понял.
Последний раз редактировалось реостат_renamed_1138173_19012025; 16.07.2015 в 16:25. Причина: Добавлено сообщение
Аватар для ToxicCherry
Royal Guards of Rinka
Регистрация:
29.01.2009
Космос
Re: Подарки для новичков
Сообщение от Nevada:
это уже не ла2...
Да я в курсе, но что-то даже читать о нововведениях не хочется ... сижу на уютненькой фришечке GF x4 и не знаю печали

Аватар для Suh_renamed_63976_15052020
Старожил
Регистрация:
23.11.2006
Re: Подарки для новичков
Сообщение от реостат:
ты точно не имеешь понятия о предмете.если у тебя при добавлении поля в бд меняется логика,то я даже не знаю о чем тут еще говорить.
DAL, BLL, говорит о чём нибудь?) Учись иди уже.

Dreadnought фришардер 78+ (возможно он ещё там!)
Warrior 28+ L2 Classic Maphr (очевидно будущий ВЛ)
HotSpot - Elven Oracle 32+ L2 Classic Gran Kain
I need a miracle and not someone's charity.
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от Suh:
DAL, BLL, говорит о чём нибудь?)
какая-то антинаучная куйня.
Аватар для Zergatul_renamed_660253_30112020
Мастер
Регистрация:
17.03.2009
Re: Подарки для новичков
Сообщение от реостат:
какая-то антинаучная куйня.
лоль

Сообщение от евгений11:
мне только 14, но в свои 8 я гнул атебальд =(
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от Zergatul:
лоль
согласен!тут мне рассказывают о каких-то сикуэлях,хотя,как видно выше,все умещается в один файл.притом для каждого моба написаны все те же строки.так устроены "базы данных" игрушек.
Аватар для Zergatul_renamed_660253_30112020
Мастер
Регистрация:
17.03.2009
Re: Подарки для новичков
ну там иногда сложная логика, некоторые квест итемы падают вместе, некоторые нет. какие-то вероятности непонятные. в скрипте выше есть какой-то quest_last_reward_time, неужели шанс зависит от того, как давно тебе выпал предыдущий айтем?

Сообщение от евгений11:
мне только 14, но в свои 8 я гнул атебальд =(
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от Zergatul:
quest_last_reward_time
лень искать,но это скорее время последней сдачи квеста,а не дропа итема.у вас же вроде ограниченное кол-во повторяемых квестов и сброс в определенное время.вот и стоит это поле.
Аватар для Junin
Мастер
Регистрация:
15.09.2005
GoHa.Ru - Старожил Лекарь
Re: Подарки для новичков
Эвенты имеют свойство повторяться. мобы меняются, добавляются.
Вы и правда считаете, что исходный код постоянно переписывается?
Браво.
Аватар для реостат_renamed_1138173_19012025
Маньяк
Регистрация:
14.05.2014
Re: Подарки для новичков
Сообщение от MrDarkAngel:
Вы и правда считаете, что исходный код постоянно переписывается?
ради смеха,после обновления посмотри какие файлы изменились.
Re: Подарки для новичков
Сообщение от MrDarkAngel:
Эвенты имеют свойство повторяться. мобы меняются, добавляются.
Вы и правда считаете, что исходный код постоянно переписывается?
Браво.
за 10 лет там такое наслоение кода... как движок это все еще выдерживает...
но к сожалению щас идет тенденция либо удаления контента по причинам "нагрузки на сервер", либо его оптимизация(упрощение). Примеры - удаление манора, системы 7 печатей, статистики, тв, квест-кампаний, зональных квестов; упрощение рыбалки, грядущее упрощение системы СА, объединение ряда инстов в один с рандомным попаданием в один из объединенных инстов(пример грядущее объединение Хрустального Лабиринта).


Now playing:
Rift 4.0: Starfall Prophecy; The Elder Scrolls Online, Blade'n'Soul
Аватар для Кланикус
Император земли
Регистрация:
24.11.2014
Берсеркер
Re: Подарки для новичков
Сообщение от mistlight:
за 10 лет там такое наслоение кода... как движок это все еще выдерживает...
но к сожалению щас идет тенденция либо удаления контента по причинам "нагрузки на сервер", либо его оптимизация(упрощение). Примеры - удаление манора, системы 7 печатей, статистики, тв, квест-кампаний, зональных квестов; упрощение рыбалки, грядущее упрощение системы СА, объединение ряда инстов в один с рандомным попаданием в один из объединенных инстов(пример грядущее объединение Хрустального Лабиринта).
Еще какую то хрень намутили с прогрузкой персонажей, можно в 800 ренжа стоять от "места" прогрузки и не видеть бегущий на тебя пак (пример всякие мосты в ев, и коридоры между локациями)
Ощущение что всю игру разбили на зоны прогрузки а не просто относительно твоего персонажа как раньше, есть по этой штуке информация какая нибудь?

Аватар для Junin
Мастер
Регистрация:
15.09.2005
GoHa.Ru - Старожил Лекарь
Сообщение от mistlight:
за 10 лет там такое наслоение кода... как движок это все еще выдерживает...
но к сожалению щас идет тенденция либо удаления контента по причинам "нагрузки на сервер", либо его оптимизация(упрощение). Примеры - удаление манора, системы 7 печатей, статистики, тв, квест-кампаний, зональных квестов; упрощение рыбалки, грядущее упрощение системы СА, объединение ряда инстов в один с рандомным попаданием в один из объединенных инстов(пример грядущее объединение Хрустального Лабиринта).
Я имел ввиду именно дроп эвент предметов
Аватар для Lionchik_renamed_1163717_23122020
Старожил
Регистрация:
07.12.2014
Re: Подарки для новичков
Вчера собрал парик шт. 10 мобов убил масухой , вывалилось 6 букв О.
Походу там на каждую букву отдельные условия.
Аватар для Кланикус
Император земли
Регистрация:
24.11.2014
Берсеркер
Re: Подарки для новичков
Сообщение от Lionchik:
Вчера собрал парик шт. 10 мобов убил масухой , вывалилось 6 букв О.
Походу там на каждую букву отдельные условия.
Регулярно водили парики, все буквы дропаются разные, тебе повезло не более

Re: Подарки для новичков
Сообщение от Lionchik:
вывалилось 6 букв О.
Можешь открыть 2 "ООО"
Аватар для Hugo Zuss
Император Чижовки
Регистрация:
20.02.2012
Веселый дембель
Re: Подарки для новичков
ну чо там хардкор этот ваш? теперь малиновый?

Аватар для Limaro_renamed_693005_09022022
Знаток
Регистрация:
28.08.2009
Re: Подарки для новичков
Сообщение от Lionchik:
Походу там на каждую букву отдельные условия.
Отдельное кол-во на каждую букву для "вброса" на сервер.
Аватар для Zergatul_renamed_660253_30112020
Мастер
Регистрация:
17.03.2009
Re: Подарки для новичков
Сообщение от Lionchik:
Вчера собрал парик шт. 10 мобов убил масухой , вывалилось 6 букв О.
Походу там на каждую букву отдельные условия.
вчера ударил моба, нанес критом ровно 2000 урона. походу там на каждый урон отдельные условия

Сообщение от евгений11:
мне только 14, но в свои 8 я гнул атебальд =(
Ваши права в разделе