Перейти к содержанию

Новая скрипт команда


Рекомендуемые сообщения

Хай, в общем решил написать простенькую скрипт команду, которая будет заносить данные в БД.

Знаю что это легко сделать через обычный скрипт, но мне так интереснее :D


BUILDIN_FUNC(settitle)
{
TBL_PC *sd;
int char_id;
char title;

char_id=script_getnum(st,2);
title=script_getnum(st,3);

sd = script_rid2sd(st);
if (!sd) return 0;

if( !script_hasdata(st,2) || !script_hasdata(st,3) )
{
ShowError("script_settitle invalid options %d %s", char_id, title);
return SCRIPT_CMD_FAILURE;
}

if( Sql_Query( mmysql_handle, "UPDATE `char` SET `title` = %s WHERE `char_id` = %d;", title, char_id ) != SQL_SUCCESS )
{
Sql_ShowDebug( mmysql_handle );
return SCRIPT_CMD_FAILURE;
}

Sql_FreeResult(mmysql_handle);
return SCRIPT_CMD_SUCCESS;
}

BUILDIN_DEF(settitle,"is"),

Суть проблемы:

Ничего не происходит:DD

Юзаю

settitle(getcharid(0), "lol");

Где я ошибся?-)

Изменено пользователем Kubix
Ссылка на комментарий
Поделиться на другие сайты

- второй параметр является строкой, а Вы пытаетесь получить его с помощью функции script_getnum

- функция script_getstr возвращает указатель, а у Вас объявлена переменная char вместо указателя

- функцию script_hasdata необходимо использовать до получения данных и только для опциональных параметров


BUILDIN_FUNC(settitle)
{
TBL_PC* sd;
int char_id;
const char* title;

sd = script_rid2sd(st);

if (sd == NULL)
{
return SCRIPT_CMD_FAILURE;
}

char_id = script_getnum(st, 2);
title = script_getstr(st, 3);

if (Sql_Query(mmysql_handle, "UPDATE `char` SET `title` = '%s' WHERE `char_id` = '%d'", title, char_id) != SQL_SUCCESS)
{
Sql_ShowDebug(mmysql_handle);
return SCRIPT_CMD_FAILURE;
}

Sql_FreeResult(mmysql_handle);

return SCRIPT_CMD_SUCCESS;
}

P.S. Если строка будет приходить от игрока, то необходимо экранировать спецсимволы.

  • Upvote 4
Ссылка на комментарий
Поделиться на другие сайты

Ой а подскажите что это такое? В чём проблема анонса?


[Error]: Loading NPC file: npc/custom/rodstvo/eidos.txt
script error on npc/custom/rodstvo/eidos.txt line 42
parse_simpleexpr: unexpected end of expression
37 : //Dagos
38 : callfunc "BecomeRace", 4;
39 : set luk,luk+4;
40 : set agi,agi+4;
41 : set Critical,Critical+9;
* 42 : announce ""+strcharinfo(0)+" Completed The quest and know He is
Dagos!";
43 : close;
44 : nolvl:
45 : mes "Your Job level is too low, come when you reach level 60+ Jo
b Level!";
46 : close;
47 : }

Изменено пользователем Fizik
Ссылка на комментарий
Поделиться на другие сайты

Ой а подскажите что это такое? В чём проблема анонса?


[Error]: Loading NPC file: npc/custom/rodstvo/eidos.txt
script error on npc/custom/rodstvo/eidos.txt line 42
parse_simpleexpr: unexpected end of expression
37 : //Dagos
38 : callfunc "BecomeRace", 4;
39 : set luk,luk+4;
40 : set agi,agi+4;
41 : set Critical,Critical+9;
* 42 : announce ""+strcharinfo(0)+" Completed The quest and know He is
Dagos!";
43 : close;
44 : nolvl:
45 : mes "Your Job level is too low, come when you reach level 60+ Jo
b Level!";
46 : close;
47 : }

ты знал где написать-)

анонсу нужны флаги. перед ; допиши bc_all

типа

announce strcharinfo(0)+" Completed The quest and know He is Dagos!",bc_all;

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика