Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Исправление ошибок

, плагин выдает в логах ошибки
Статус пользователя ncux0Zz
сообщение 16.11.2016, 18:53
Сообщение #1


Стаж: 14 лет

Сообщений: 359
Благодарностей: 14
Полезность: < 0

Привет всем, на сервере работает плагин "Only Knife", запускается время от времени. Когда он включается, он работает нормально, но в логах выдает ошибки, сам я в скриптинге не очень, гляньте что можно сделать, все же хотелось бы чистые логи:
knife.sma
Код:
#include <amxmodx>
#include <amxmisc>
#include <fun>

new knifeonly = 0;

public plugin_init () {
register_plugin ( "Knives Only", "0.1a", "SilverTide" );
register_concmd ( "amx_knivesonly", "cmdknives_only", ADMIN_LEVEL_A, "- Turns on or off Knives Only." );
register_event ( "CurWeapon", "knife", "b" );
}

public cmdknives_only ( id ) {
new arg[2];
read_argv ( 1, arg, 1 );
set_hudmessage ( 200, 100, 0, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, 2 );

if ( equal ( arg, "1" ) ) {
knifeonly = 1;
client_cmd ( id, "weapon_knife" );
console_print ( id, "Knives Only has been turned on." );
} else if ( equal ( arg, "0" ) ) {
knifeonly = 0
console_print ( id, "Knives Only has been turned off." );
} else {
if ( knifeonly == 0 ){
console_print ( id, "Usage: amx_knivesonly 1 = 0n 0 = off Currently: OFF" );
}
if ( knifeonly == 1 ){
console_print ( id, "Usage: amx_knivesonly 1 = 0n 0 = off Currently: ON" );
}
}

return PLUGIN_CONTINUE;
}

public knife ( id ) {
if ( knifeonly == 0 ) {
// Do Nothing;
}
if ( knifeonly == 1 ) {
new clip, ammo;
new usersweapon = get_user_weapon ( id, clip, ammo );

if ( usersweapon == CSW_KNIFE ) {
// Do Nothing
} else {
// Bury player and strip of weapons, then return to starting position
new origin[3];
get_user_origin ( id, origin );
origin[2] -= 500;
set_user_origin ( id, origin );
new iwpn, iwpns[32], nwpn[32];
get_user_weapons ( id, iwpns, iwpn );
for ( new a = 0; a < iwpn; ++a ) {
get_weaponname ( iwpns[a], nwpn, 31 );
engclient_cmd ( id, "drop", nwpn );
}
new origin2[3];
get_user_origin ( id, origin2 );
origin2[2] += 500;
set_user_origin ( id, origin2 );
// Select the knife
client_cmd ( id, "weapon_knife" );
}
}
return PLUGIN_CONTINUE;

}

Ошибки в логах:
error_20161116.log
L 11/16/2016 - 20:51:54: Start of error session.
L 11/16/2016 - 20:51:54: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20161116.log")
L 11/16/2016 - 20:51:54: [FUN] Invalid player 13
L 11/16/2016 - 20:51:54: [AMXX] Run time error 10 (plugin "amx_knivesonly.amxx") (native "set_user_origin") - debug not enabled!
L 11/16/2016 - 20:51:54: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/16/2016 - 20:52:11: [FUN] Invalid player 9
L 11/16/2016 - 20:52:11: [AMXX] Run time error 10 (plugin "amx_knivesonly.amxx") (native "set_user_origin") - debug not enabled!
L 11/16/2016 - 20:52:11: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/16/2016 - 23:06:18: Start of error session.
L 11/16/2016 - 23:06:18: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20161116.log")
L 11/16/2016 - 23:06:18: [FUN] Invalid player 7
L 11/16/2016 - 23:06:18: [AMXX] Run time error 10 (plugin "amx_knivesonly.amxx") (native "set_user_origin") - debug not enabled!
L 11/16/2016 - 23:06:18: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/16/2016 - 23:06:25: [FUN] Invalid player 6
L 11/16/2016 - 23:06:25: [AMXX] Run time error 10 (plugin "amx_knivesonly.amxx") (native "set_user_origin") - debug not enabled!
L 11/16/2016 - 23:06:25: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Algalon
сообщение 16.11.2016, 23:05
Сообщение #2
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

ncux0Zz, что за ватный плагин, где вы его откопали?
Что плагин должен делать вообще, отнимать оружие и принудительно выбирать нож для всех игроков?
Я не могу понять, нафига здесь изменение координаты игрока?

Отредактировал: Algalon, - 16.11.2016, 23:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ncux0Zz
сообщение 17.11.2016, 6:21
Сообщение #3


Стаж: 14 лет

Сообщений: 359
Благодарностей: 14
Полезность: < 0

Algalon, плагин я уже и не помню где откапал, но работает он правильно, во всяком случаи в игре) во время "knife" раунда он отбирает оружие и не дает взять его или выбрать. Причем принцип работы в игре очень хороший, модели исчезают совсем, когда пытаешься выбрать пистолет и т.д. они выкидываются и исчезают.
Можете его установить и проверить, мне и нужно чтобы он так же работал, а вот на счет кода я хз, пускай другой даже будет, но не суть, главное работал так же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 17.11.2016, 7:17
Сообщение #4


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Держи:

Код:
/** Modified by Subb98 [17.11.2016] */

#include <amxmodx>
#include <amxmisc>

new bool:knifeonly;

public plugin_init () {
register_plugin("Knives Only", "0.1a", "SilverTide");
register_concmd("amx_knivesonly", "cmdknives_only", ADMIN_LEVEL_A, "- Turns on or off Knives Only.");
register_event("CurWeapon", "knife", "be", "1=1");
}

public cmdknives_only(const id, const level, const cid) {
if(!cmd_access(id, level, cid, 1)) {
return PLUGIN_HANDLED;
}
new arg[2];
read_argv (1, arg, charsmax(arg));
switch(arg[0]) {
case '0': {
knifeonly = false;
console_print(id, "Knives Only has been turned off.");
}
case '1': {
knifeonly = true;
engclient_cmd(id, "weapon_knife");
console_print(id, "Knives Only has been turned on.");
}
default: {
console_print(id, "Usage: amx_knivesonly <1/0>");
}
}
return PLUGIN_HANDLED;
}

public knife(const id) {
if(knifeonly != true) {
return;
}
new clip, ammo, wpnid = get_user_weapon(id, clip, ammo);
if (wpnid != CSW_KNIFE) {
engclient_cmd(id, "weapon_knife");
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 17.11.2016, 14:42
Сообщение #5
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

Я теперь понял зачем там изменение координаты игрока, это мега-тру-про способ удаления оружия с земли. cbf1b2bfde1a.gif
ncux0Zz, если бы вы знали какой это унылый способ, и как там все это реализовано.

Subb98, лучше использовать аргументы CurWeapon, вместо get_user_weapon.
И опять же, нет принудительной смены оружия для всех игроков.
Код:
case '1': {
knifeonly = true;
engclient_cmd(id, "weapon_knife");
console_print(id, "Knives Only has been turned on.");
}
--->
Код:
case '1':
{
knifeonly = true;

new iPlayers[32], iNum;
get_players(iPlayers, iNum, "ah");

for(new i = 0; i < iNum; i++)
engclient_cmd(iPlayers[i], "weapon_knife");

console_print(id, "Knives Only has been turned on.");
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 17.11.2016, 14:45
Сообщение #6


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Algalon, лучше вообще не использовать CurWeapon, но мне было лень вносить большие правки. smile.gif Касаемо того, что не предусмотрено замены оружия всем - это да, ценное замечание.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: