Collapse
-
Постов
31 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Collapse
-
-
Здравствуйте, пишу скрипт, который будет выдавать игроку одну из выбранных гильдий.
Кроме добавления строки в таблицу guild_member и изменения значения guild_id в таблице char для пользователя. Кроме этого с чем еще надо "пошаманить", чтобы завершить процесс?
Или я совсем не в ту парафию полез? -
4 минуты назад, Salfer сказал:
Создай новую тему, раз пишешь по другому вопросу, а вообще по мимо ошибки обычно пишет где именно допущена ошибка.
Вопрос все тот же. Ошибка в куске
BUILDIN_FUNC(setnpcstats) { TBL_NPC* nd = NULL; unsigned int value = 0; if (script_hasdata(st,2)) nd = map_id2nd(script_getnum(st,2)); else nd = map_id2nd(st->oid); if (nd == NULL) return 0; if (script_hasdata(st,3)) value = script_getnum(st,3); if (!nd->status.hp) status_calc_npc(nd, true); else status_calc_npc(nd, false); break; nd->stat_point = value > 0 ? value : 999; status_calc_misc(nd->bl, &nd->status, nd->level); }
-
Скрытый текстВ 05.12.2016в10:50 PM, Nurkz сказал:
В rA и Herc уже можно давным давно давать статы нпсам, но если у нас eAthena, ничего страшного, всегда можно стырить =)
Ну во первых изменим в src/map/script.c функции unitskilluseid и unitskillusepos
Меняем в функции unitskilluseid:
if( bl != NULL ) unit_skilluse_id(bl, target_id, skill_id, skill_lv);
На:
if (bl != NULL) { if (bl->type == BL_NPC) { if (!((TBL_NPC*)bl)->status.hp) status_calc_npc(((TBL_NPC*)bl), true); else status_calc_npc(((TBL_NPC*)bl), false); } unit_skilluse_id(bl, target_id, skill_id, skill_lv); }
И в unitskillusepos:
if( bl != NULL ) unit_skilluse_pos(bl, skill_x, skill_y, skill_id, skill_lv);
На:
if (bl != NULL) { if (bl->type == BL_NPC) { if (!((TBL_NPC*)bl)->status.hp) status_calc_npc(((TBL_NPC*)bl), true); else status_calc_npc(((TBL_NPC*)bl), false); } unit_skilluse_pos(bl, skill_x, skill_y, skill_id, skill_lv); }
Далее добавим функцию добавления статов нпсу =)
BUILDIN_FUNC(setnpcstats) { TBL_NPC* nd = NULL; unsigned int value = 0; if (script_hasdata(st,2)) nd = map_id2nd(script_getnum(st,2)); else nd = map_id2nd(st->oid); if (nd == NULL) return 0; if (script_hasdata(st,3)) value = script_getnum(st,3); if (!nd->status.hp) status_calc_npc(nd, true); else status_calc_npc(nd, false); break; nd->stat_point = value > 0 ? value : 999; status_calc_misc(nd->bl, &nd->status, nd->level); }
и ниже описываем что она будет принимать: (Всего два необязательных параметра)
BUILDIN_DEF(setnpcstats,"??"),
Далее идем в src/map/status.c и функцию status_calc_bl_
в свиче добавляем новый кейс которым будет выглядеть данным образом:
case BL_NPC: status_calc_npc_(BL_CAST(BL_NPC,bl), first); break;
Далее ищем status_get_status_data и добавляем:
case BL_NPC: return &((TBL_NPC*)bl)->status;
То же самое ниже в status_get_base_status:
case BL_NPC: return &((TBL_NPC*)bl)->status;
И добавляем функцию status_calc_npc_:
int status_calc_npc_(struct npc_data *nd, bool first) { struct status_data *status = &nd->status; if (!nd) return 0; if (first) { status->hp = 1; status->sp = 1; status->max_hp = 1; status->max_sp = 1; status->def_ele = ELE_NEUTRAL; status->ele_lv = 1; status->race = RC_DEMIHUMAN; status->size = nd->size; status->rhw.range = 1 + status->size; status->mode = (MD_CANMOVE|MD_CANATTACK); status->speed = nd->speed; } status->str = nd->stat_point + nd->params.str; status->agi = nd->stat_point + nd->params.agi; status->vit = nd->stat_point + nd->params.vit; status->int_= nd->stat_point + nd->params.int_; status->dex = nd->stat_point + nd->params.dex; status->luk = nd->stat_point + nd->params.luk; status_calc_misc(&nd->bl, status, nd->level); status_cpy(&nd->status, status); return 0; }
Далее заходим в src/map/status.h
В самом верху песле строчки:
struct mercenary_data;
Добавляем:
struct npc_data;
Листаем в самый низ и находим:
#define status_calc_mercenary(md, first) status_calc_bl_(&(md)->bl, SCB_ALL, first)
Добавляем следующей строчкой:
#define status_calc_npc(nd, first) status_calc_bl_(&(nd)->bl, SCB_ALL, first)
Ниже видим:
int status_calc_mercenary_(struct mercenary_data *md, bool first);
Добавляем:
int status_calc_npc_(struct npc_data *nd, bool first);
Далее идём в src/map/npc.h и видим строчку:
unsigned size : 2;
Ниже добавляем:
struct status_data status; unsigned int level,stat_point; struct s_npc_params { unsigned short str, agi, vit, int_, dex, luk; } params;
Вот вроде и всё, рекомпилим и пишем в скрипте:
getmapxy .@map$, .@x, .@y, 1; setnpcstats getnpcid(0), 999; unitskillusepos getnpcid(0), WZ_METEOR, 10, .@x, .@y;
ПС! Хотя я бы всё же рекомендовал перейти на rA/Herc и использовать setunitdata.
Может кому нужно будет, пусть будет.
При компиляции получаю ошибку
error: incompatible type for argument 1 of 'status_calc_misc' status_calc_misc(nd->bl, &nd->status, nd->level);
-
19 минуту назад, Gandalf сказал:
Вряд ли человек, который спрашивает как сделать эффекты с убийством, сделает статы нпцу )
а все же, как?
-
7 часов назад, ucell-uz сказал:
интересно что за sql_моде ещё такой =))
ну раз решили проблему и то хорошо
-
20 часа назад, ucell-uz сказал:
возможно вы чего то не поняли..
используйте утилиту для работы с базами не phpmyadmin а прогу heidisql в 100 раз удобно
вы скопировали на сервер или удалённый комп, я хз чё вы там используете, я приведу пример eathena/sql-files/ внутри этой папки вам нужно всего 2 файла импортировать в вашу субд базу а именно main.sql и logs.sql ни в коем случае не берите какие то другие файлы если вы юзаете афину е арена то и файлы надо заливать ихние, например с рАрены они не подойдут так же и с геркулесом, каждые из афин подстроены по разным стандартам..
вам легче будет заново создать новую базу, и с папки sql-files залить базы.. за тем открываете экспортированную базу нахидите параметр login и там правите p1 s1 на что нибудь другое
гляньте просто видео по настройке базы немного пролистайте видео, думаю будет вам это интересно
https://cloud.mail.ru/public/UcQi2wyqXUsv/motr/re_and_prere.avi
Я пользовался phpmyadmin. Сервер vds
Проблема была в sql_mode -
1 час назад, Salfer сказал:
используй базу данных своего сервера, а не какого-то другова
Они на одном сервере
-
Не помогло.
-
Здравствуйте, при попытке создать аккаунт получаю эту ошибку:
[SQL]: DB error - Incorrect datetime value: '0000-00-00 00:00:00' for column 'lastlogin' at row 1 [Debug]: at account_sql.c:619 - INSERT INTO `login` (`account_id`, `userid`, `user_pass`, `sex`, `email`, `level`, `state`, `unban_time`, `expiration_time`, `logincount`, `lastlogin`, `last_ip`, `birthdate`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Кто-нибудь сталкивался с этим?Есть идеи?
-
16 минуту назад, Salfer сказал:
ставь клиент на кодировку cp1251 вместо UTF-8
как?
Сделал, спасибо -
Здравствуйте, возникла проблема с кирилицей в чате.
Использую этот эмулятор, клиент kRO_Renewal_20160124, exe 2014-02-05bRagexe.
Не отображаются русские, украинские символы в игре, в место них корейские.
В чат логе все нормально отображается.
Как решить проблему? -
czereszniovski
-
Да, после удаления файла map_cache.dat, запустив mapcache.exe
-
пишет что нету карт, посмотри правильно ли ты прописал дерикторию к картам.
попробуй изменить / на \
Пробовал, результат тот же.
-
Вечер добрый.
Помогите справиться с проблеммой
-
У кого то ещё так ругается? После добавления просит corsors.act/spr и так далее. Как исправить?
-
-
-
-
-
Данные от базы скрыл, дабы не выставлять на всеобщее "осмотрение".
<?php
return array(
// Example server configuration. You may have more arrays like this one to
// specify multiple server groups (however they should share the same login
// server whilst they are allowed to have multiple char/map pairs).
array(
'ServerName' => 'FluxRO',
// Global database configuration (excludes logs database configuration).
'DbConfig' => array(
//'Socket' => '/tmp/mysql.sock',
//'Port' => 3306,
//'Encoding' => 'utf8', // Connection encoding -- use whatever here your MySQL tables collation is.
'Convert' => 'utf8',
// -- 'Convert' option only works when 'Encoding' option is specified and iconv (http://php.net/iconv) is available.
// -- It specifies the encoding to convert your MySQL data to on the website (most likely needs to be utf8)
'Hostname' => 'XXXXXX',
'Username' => 'XXXXXX',
'Password' => 'XXXXXX',
'Database' => 'XXXXXX',
'Persistent' => true,
'Timezone' => null // Example: '+0:00' is UTC.
// The possible values of 'Timezone' is as documented from the MySQL website:
// "The value can be given as a string indicating an offset from UTC, such as '+10:00' or '-6:00'."
// "The value can be given as a named time zone, such as 'Europe/Helsinki', 'US/Eastern', or 'MET'." (see below continuation!)
// **"Named time zones can be used only if the time zone information tables in the mysql database have been created and populated."
),
// This is kept separate because many people choose to have their logs
// database accessible under different credentials, and often on a
// different server entirely to ensure the reliability of the log data.
'LogsDbConfig' => array(
//'Socket' => '/tmp/mysql.sock',
//'Port' => 3306,
//'Encoding' => null, // Connection encoding -- use whatever here your MySQL tables collation is.
'Convert' => 'utf8',
// -- 'Convert' option only works when 'Encoding' option is specified and iconv (http://php.net/iconv) is available.
// -- It specifies the encoding to convert your MySQL data to on the website (most likely needs to be utf8)
'Hostname' => 'XXXXXX',
'Username' => 'XXXXXX',
'Password' => 'XXXXXX',
'Database' => 'XXXXXX'
'Persistent' => true,
'Timezone' => null // Possible values is as described in the comment in DbConfig.
),
// Login server configuration.
'LoginServer' => array(
'Address' => 'XXXXXX',
'Port' => 6900,
'UseMD5' => true,
'NoCase' => true, // eA account case-sensitivity; Default: Case-INsensitive (true).
'Level' => 0, // Default account level during registration.
//'Database' => 'ragnarok'
),
'CharMapServers' => array(
array(
'ServerName' => 'FluxRO',
'BaseExpRates' => 1000,
'JobExpRates' => 1000,
'MvpExpRates' => 200,
'DropRates' => 25,
'MvpDropRates' => 25,
'CardDropRates' => 25,
'MaxCharSlots' => 9,
'DateTimezone' => null, // Specifies game server's timezone for this char/map pair. (See: http://php.net/timezones)
//'ResetDenyMaps' => 'sec_pri', // Defaults to 'sec_pri'. This value can be an array of map names.
//'Database' => 'ragnarok', // Defaults to DbConfig.Database
'CharServer' => array(
'Address' => '62.76.185.127',
'Port' => 6121
),
'MapServer' => array(
'Address' => '62.76.185.127',
'Port' => 5121
),
// -- WoE days and times --
// First parameter: Starding day 0=Sunday / 1=Monday / 2=Tuesday / 3=Wednesday / 4=Thursday / 5=Friday / 6=Saturday
// Second parameter: Starting hour in 24-hr format.
// Third paramter: Ending day (possible value is same as starting day).
// Fourth (final) parameter: Ending hour in 24-hr format.
// ** (Note, invalid times are ignored silently.)
'WoeDayTimes' => array(
//array(0, '12:00', 0, '14:00'), // Example: Starts Sunday 12:00 PM and ends Sunday 2:00 PM
//array(3, '14:00', 3, '15:00') // Example: Starts Wednesday 2:00 PM and ends Wednesday 3:00 PM
),
// Modules and/or actions to disallow access to during WoE.
'WoeDisallow' => array(
array('module' => 'character', 'action' => 'online'), // Disallow access to "Who's Online" page during WoE.
array('module' => 'character', 'action' => 'mapstats') // Disallow access to "Map Statistics" page during WoE.
)
)
)
)
);
?>
-
Здравствуйте, шёл по гайду http://ea-support.ws...anovke-flux-cp/
Сделал вроде всё как надо. Сайт выдаёт ошибку
Parse error: syntax error, unexpected ''Persistent'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' in ragnarok.bc18.ru/config/servers.php on line 41Как решаеться?
-
Доброго времени суток.
Нужен партнёр для совместного проекта.
Какие навыки требуются:
1. Хорошее знание афины (еамод) , С++.
2. Работа с клиентом.
3. Полное отсутсвие лени и присутстиве интузиазма в работе.
Немного о сервере:
256/120 уровни, рейты ~5000x
Огромное внимание сконцентрировано на различных квестах и фарме. Разные PvP зоны, каждая из которых по-своему интересна. Новые мвп и бонусы за них, новые подземелья, новые системы квестов и прочая хренотень для развлечения.
Человек нужен ответственный, который серьёзно к этому отнесётся, и будет полностью предан делу
Со своей стороны буду помогать, чем с могу, знания кое-какие есть, есть огромный комплект уже готовых квестов и различных скриптов, от Вас требуется корректировка и владения навыками настройки клиента.
Всю финансовую часть беру на свою сторону, полностью спонсирую старт сервера и в дальнейшем, по мере-возможности всякие расходы. Грубо говоря, готов вложить до 1000$
Желающие в ЛС.
-
Правда Крым китайцам продали?Был на майдане в "Небесной Сотне", но до "гарячих событий" не досидел, т.к. начались усложнения с гепатитом.
Сейчас ситуация более-менее стабилизировалась, Крым бушует почему-то, восток тоже востал, "Правый сектор" взял всю власть к себе в кулак, каждая ОГА контролируется загонами самообороны, на западе большинство дорог перекрыты самообороной и чательно проверяют каждую странную машину, ловят по всей Украине Яныка. Опозиции никто не верит, как и Тимошенко, нам нужны новые политики. Партия регионов просит у народа прощения, мол их Янукович предал. Тот же беркут на коленях извинение просит. Сейчас у всех траур, все скорбят по погибшим. "Хоромы" прошлой власти люди отдают под санатории.
Слава Украине!
Да, а ещё обезумевшие от безнаказанности терористы-бэндэровцы своих убивают.
А беркут - герои
Гильдии и sql
в Помощь в скриптинге
Опубликовано
Использую SQL, запросы шлю через query_sql().
Разрешите в лс обратиться за помощью?)