-
Постов
198 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Сообщения, опубликованные SemirLab
-
-
Стандартными средствами нельзя, насколько я знаю.
Модификаций таких не видел... (http://www.eathena.ws/board/lofiversion/index.php/t257647.html)
Лично я на этот счет не парюсь, ибо в гармонии есть такая функция.
- 1
-
Появилась необходимость присвоить игрокам перманентные бонусы в зависимости от аккаунт-переменной (##).
Пример:
Если ##TEST = 1, то давать к примеру 20% по деми-хуманам.
Если ##TEST = 2, то 20% от демихуманов и тд.
Если меняется значение переменной - меняется и бонус.
Если переменная равна 0 - никакой бонус не присваивается.
Пробовал выдавать бонусы типо bStr и тд, через OnPCLoginEvent, толку нет.
Помогите, пожалуйста, реализовать)
-
случайно не с sclientinfo.xml читает?
-
Да пох) пусть юзают) У меня новый на подходе)
- 1
-
-
goto в цикле зачем?
И да, так и задумано что проверка нон-стоп? может хотя бы задержку секундную поставить?
P.S.: после удаления из массива элемента я бы переместил на его место последний, чтобы isloggedin(.aid[.@i]) не вызывал ошибок
Пример №2
-
появилось время, порылся глубже в проблеме:
Проверяет он не перед каждым раудном, а перед каждым игроком. Но в нем есть нахер не нужная строчка.
Строка
set .@i, .@i -1;
Что по сути она делает? Все портит(
Пример №1:
На эвенте зарегистрировалось 5 человек, массив (.aid) выглядит так:
0 Вова
1 Петя
2 Вася
3 Саша
4 МишаЕще перед началом эвента выходит первый игрок - Вова(0).
Начинается эвент, скрипт проверяет строку массива .aid[.@i] первого игрока (который вышел), т.е. .aid[0].
Скрип понимает что игрок оффлайн, далее он делает:
deletearray .aid[.@i], 1;
(удаляет игрока из массива)
а далее (внимание)
set .@i, .@i -1;
отнимает от вашего .@i единицу.
От чего тому становится херово, ибо его значение становится -1. ( 0-1 = -1 )
После чего эмуль пишет:
[Warning]: script:getelementofarray: index out of range (-1)
[Debug]: Data: variable name='.aid' index=0Ну и падает эвент.
Пример №2:
На эвенте зарегистрировалось 5 человек, массив (.aid) выглядит так:
0 Вова
1 Петя
2 Вася
3 Саша
4 МишаЕще перед началом эвента выходят - Петя(1) и Вася(2).
Начинается эвент, скрипт проверяет строку массива .aid[.@i] первого игрока, т.е. .aid[0] - все ок.
Далее:
set .@i, .@i +1;
(.@i = 1)
Потом проверяет игрока .aid[1] - он оффлайн:
deletearray .aid[.@i], 1;
(удаляет игрока из массива)
далее:
set .@i, .@i -1;
(.@i = 0)
...
Потом скрипт повторяет все действия заного, так как .@i = 0. (еще раз бьет первого игрока, устанавливает .@i = 1)
Опять проверяет игрока .aid[1] (он тоже вышел) - игрока нет, поле пустое - (null)
Эвент пишет:
Очередь игрока (null)
и зависает.
Чтобы этого не происходило:
1. Надите:
announce "Регистрация закончена. Эвент начался.", 8;
while ( getarraysize(.aid) > 1 ) {
if (!isloggedin(.aid[.@i])){
deletearray .aid[.@i], 1;
set .@i, .@i -1;
}2. Удалите:
set .@i, .@i -1;
3. Добавьте goto, должно получиться примерно так:
announce "Регистрация закончена. Эвент начался.", 8;
L_Start:
while ( getarraysize(.aid) > 1 ) {
if (!isloggedin(.aid[.@i])){
deletearray .aid[.@i], 1;
goto L_Start;
}Теперь все ОК)
-
Работает, спасибо)
Тему можно офф.
-
2600,WALKING_TREASURE,Walking Treasure,Walking Treasure,99,300000,0,0,0,0,0,0,50,70,1,1,1,1,1,1,0,0,2,0,60,0x00003885,85,0,0,0,0,0,0,,0,,0,,12103,10000,7227,10000,20050,100,20051,100,20052,100,20053,100,20054,100,20055,100,674,100,0,
Используется спрайт моба Ancient Mimic.
Все так же, азурю моба - падает сервер.
Если вам необходима дополнительная информация - спрашивайте, напишу, что нужно)
-
Есть кастомный моб (к слову, ID - 2600). Моб представляет собой просто мешок с сокровищами, который не умеет атаковать. Используется спрайт Ancient Mimic.
Проблема в том, что при убийстве его азурой (только его и только ей) падает мап сервер Оо
Заметил зависимость: если после азуры сразу переместить персонажа - шанс на падение сервера крайне мал. Если ударить азуру и больше ничего не трогать - 100% падает мап сервер и спамит ошибкой:
WFIFOSET: Maximum write buffer size for client connection...
Помогите, пожалуйста, с решением.
-
Вместо гоуту можно сделать так:
if(getmapusers("guild_vs1.gat") >= 100 ) { next; mes "[^0000FFАрена^000000]"; mes "Извини, на этой арене нет места..."; close; }
Это конечно лишний код.. но и goto не дело. Думаю для четырех проверок можно и это поюзать, пока более внятное что-то не напишешь)
-
Все еще актуально
-
atcommand "@cash "+.@p_coin_amount*100;
проще сделать так:
set #CASHPOINTS,#CASHPOINTS+.@p_coin_amount*100;
-
-
Неспешно куплю Гармонь или слот.
Предложения в ПМ.
-
А разве для обмена через обменники не нужно связывать WM и Яндекс кошельки?
-
Последую совету Sanasol. Чуть перепишу генератор и гляну, что получится)
Всем спасибо за ответы.
-
благодарю, но картинки расчитывал делать типо такой:
-
Ап, все еще актуально.
-
Да там патч объемный получится к тому-же, реализовал уже через диалог с нпц.
Более информативно получилось с суммой выигрыша\проигрыша, ставками на бонус и тд.
Генератор искал еще пару дней назад, ничего путного...
-
Однорукого бандита пишу, а рисовать картинки со всем комбинациями от 111 до 999 как то стремно)
-
"The client is able to display only one cutin at the same time and each new one will cause the old one to disappear."
Так и думал...
Думаю сорсов для этого тоже не найти =\
-
Собственно мучает вопрос...
Как вывести несколько изображений сразу через cutin?
К примеру мне нужно показать 3 разные картинки одновременно в левом и правом углах и по центру.
Заранее благодарю.
-
Сабж.
Ищу человека (из проверенных) для обмена Я.Д. (моих) на ВМР (ваши).
Сумма не большая, порядка 2к.
____________________________________________________________________
Осталось 1.1к
Valkyrie event
в Скрипты
Опубликовано · Изменено пользователем SemirLab
Юзал, Правда не видел смысла в спаме сообщениями в общий. поэтому сделал waitingroom с кол-вом hp. Не помню точно, многое переписывал, но за эвент спасибо) хз как сам не допер)
ЗЫ. Какой смысл в накладываемых статусах? Почему исключена кома? (инстант-килл?)