Kubix! Опубликовано 22 мая, 2015 Жалоба Поделиться Опубликовано 22 мая, 2015 (изменено) Хай, в общем решил написать простенькую скрипт команду, которая будет заносить данные в БД. Знаю что это легко сделать через обычный скрипт, но мне так интереснее 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"); Где я ошибся?-) Изменено 22 мая, 2015 пользователем Kubix Ссылка на комментарий Поделиться на другие сайты Поделиться
Functor Опубликовано 22 мая, 2015 Жалоба Поделиться Опубликовано 22 мая, 2015 - второй параметр является строкой, а Вы пытаетесь получить его с помощью функции 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. Если строка будет приходить от игрока, то необходимо экранировать спецсимволы. 4 Ссылка на комментарий Поделиться на другие сайты Поделиться
Fizik Опубликовано 22 мая, 2015 Жалоба Поделиться Опубликовано 22 мая, 2015 (изменено) Ой а подскажите что это такое? В чём проблема анонса?[Error]: Loading NPC file: npc/custom/rodstvo/eidos.txtscript 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 isDagos!"; 43 : close; 44 : nolvl: 45 : mes "Your Job level is too low, come when you reach level 60+ Job Level!"; 46 : close; 47 : } Изменено 22 мая, 2015 пользователем Fizik Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 22 мая, 2015 Автор Жалоба Поделиться Опубликовано 22 мая, 2015 Ой а подскажите что это такое? В чём проблема анонса?[Error]: Loading NPC file: npc/custom/rodstvo/eidos.txtscript 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 isDagos!"; 43 : close; 44 : nolvl: 45 : mes "Your Job level is too low, come when you reach level 60+ Job Level!"; 46 : close; 47 : }ты знал где написать-)анонсу нужны флаги. перед ; допиши bc_allтипа announce strcharinfo(0)+" Completed The quest and know He is Dagos!",bc_all; 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения