←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Wymuszanie komend

Locked

  • +
  • -
manimatrix's Photo manimatrix 17.01.2010

Zrobilem male wymuszanie komend na serwer diablomoda, ale niestety nie umiem sobie poradzic z bledami. Pluginami zajmuje sie dopiero 3 dni, wiec niewiele jeszcze umiem. Tresc bledu:

Error: Symbol already defined: "read_argv" on line 21
Error: Symbol already defined: "read_argv" on line 21
Warning: Symbol is never used: "arq" on line 36
Warning: Symbol is never used: "name" on line 36

Plugin:
/* Plugin generated by AMXX-Studio */
#define PLUGIN "Wymuszanie diablo" 
#define VERSION "1.0" 
#define AUTHOR "Manimatrix"

#include <amxmodx>
#include <amxmisc>

new arq[32]
new name[32]

public plugin_init() 
{
	register_concmd("amx_wywal", "concmd_wywal" ,ADMIN_KICK,"")
	register_concmd("amx_wymus", "concmd_wymus" ,ADMIN_KICK,"")
}
public concmd_wymus(id)
{
return PLUGIN_HANDLED;
}
read_argv(1, arq, 30) new Player = cmd_target(id, arq) get_user_name(Player, name, 31)
client_cmd(id, "reset_skill") 
show_motd(Player, "Reset statystyk zostal wymuszony przez admina. Najwyrazniej nie zgadzaly sie one z zasadami serwera.")
client_print(id,print_chat,"Gracz %s zostal zmuszony do zresetowania statystyk.", name)
} 
public concmd_wywal(id)
{
return PLUGIN_HANDLED;
}

read_argv(1, arq, 30) new Player = cmd_target(id, arq) get_user_name(Player, name, 31)
client_cmd(id, "dropitem")
show_motd(Player, "Straciles item na skutek zlamania zasad serwera.")
client_print(id,print_chat,"Admin usunal graczowi %s", name)
}

Z gory wielkie dzięki za pomoc.
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 17.01.2010

Chyba chodziło o coś takiego:
/* Plugin generated by AMXX-Studio */
#define PLUGIN "Wymuszanie diablo"
#define VERSION "1.0"
#define AUTHOR "Manimatrix"

#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
register_concmd("amx_wywal", "concmd_wywal" ,ADMIN_KICK,"")
register_concmd("amx_wymus", "concmd_wymus" ,ADMIN_KICK,"")
}

public concmd_wymus(id)
{
new arq[32]
read_argv(1, arq, 30)
new Player = cmd_target(id, arq)

new name[32]
get_user_name(Player, name, 31)
client_cmd(id, "reset_skill")
show_motd(Player, "Reset statystyk zostal wymuszony przez admina. Najwyrazniej nie zgadzaly sie one z zasadami serwera.")
client_print(id,print_chat,"Gracz %s zostal zmuszony do zresetowania statystyk.", name)
}

public concmd_wywal(id)
{
new arq[32]
read_argv(1, arq, 30)
new Player = cmd_target(id, arq)

new name[32]
get_user_name(Player, name, 31)
client_cmd(id, "dropitem")
show_motd(Player, "Straciles item na skutek zlamania zasad serwera.")
client_print(id,print_chat,"Admin usunal graczowi %s", name)
}
Quote

  • +
  • -
manimatrix's Photo manimatrix 17.01.2010

Ech, skrypt wykonuje np. reset na wszystkich zamiast na jedna osobe. Da rade to poprawic?

Nie zaszkodzi znowu odswiezyc, zwlaszcza gdy czas goni.

dzięki za uwage >_>
Edited by Manimatrix, 17.01.2010 12:53.
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 17.01.2010

A w którym miejscu niby masz określone którego gracza ma dotyczyć ta komenda ?
Jeżeli cmd_target zwróci zero to akcja wykona się na wszystkich. Przydało by ci się zabezpieczenie.
Quote

  • +
  • -
manimatrix's Photo manimatrix 17.01.2010

No coz, ucze sie dopiero, wiec niewiele jeszcze wiem. Rozumiem, ze skrypt w ogole zle zaczety. Czyli jak to mniej wiecej powinno wygladac?
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 17.01.2010

No coz, ucze sie dopiero, wiec niewiele jeszcze wiem. Rozumiem, ze skrypt w ogole zle zaczety. Czyli jak to mniej wiecej powinno wygladac?


Mniej więcej tak:
public concmd_wywal(id,level,cid)
{
if (!cmd_access(id,level,cid,2))
{
console_print(id, "Nie mozesz uzyc tej funkcji")
return PLUGIN_HANDLED
}

new arg[32]
read_argv(1, arq, 31)

new player = cmd_target(id, arq, 7)

if (!player)
{
console_print(id, "Nie znaleziono gracza ^"%s^"", arg)
return PLUGIN_HANDLED
}

new name[32]
get_user_name(Player, name, 31)
client_cmd(id, "dropitem")
show_motd(Player, "Straciles item na skutek zlamania zasad serwera.")
client_print(id,print_chat,"Admin usunal graczowi %s", name)
}
Quote

  • +
  • -
manimatrix's Photo manimatrix 17.01.2010

/* Plugin generated by AMXX-Studio */
#define PLUGIN "Wymuszanie diablo" 
#define VERSION "1.0" 
#define AUTHOR "Manimatrix"

#include <amxmodx>
#include <amxmisc>

public plugin_init() 
{
	register_concmd("amx_wywal", "concmd_wywal" ,ADMIN_KICK,"")
	register_concmd("amx_wymus", "concmd_wymus" ,ADMIN_KICK,"")
}

public concmd_wymus(id,level,cid)
{
  if (!cmd_access(id,level,cid,2))
  {
    console_print(id, "Nie mozesz uzyc tej funkcji")
    return PLUGIN_HANDLED
  }
  
        new arg[32]
        read_argv(1, arq, 31)
  
  new player = cmd_target(id, arq, 7)
  
  if (!player)
  {
    console_print(id, "Nie znaleziono gracza ^"%s^"", arg)
    return PLUGIN_HANDLED
  }
  
  new name[32]
  get_user_name(Player, name, 31)
	client_cmd(id, "say /reset") 
	show_motd(Player, "Reset statystyk zostal wymuszony przez admina. Najwyrazniej nie zgadzaly sie one z zasadami serwera.")
	client_print(id,print_chat,"Gracz %s zostal zmuszony do zresetowania statystyk.", name)
}

public concmd_wywal(id,level,cid)
{
  if (!cmd_access(id,level,cid,2))
  {
    console_print(id, "Nie mozesz uzyc tej funkcji")
    return PLUGIN_HANDLED
  }
  
        new arg[32]
        read_argv(1, arq, 31)
  
  new player = cmd_target(id, arq, 7)
  
  if (!player)
  {
    console_print(id, "Nie znaleziono gracza ^"%s^"", arg)
    return PLUGIN_HANDLED
  }
  
  new name[32]
  get_user_name(Player, name, 31)
  client_cmd(id, "say /drop")
  show_motd(Player, "Straciles item na skutek zlamania zasad serwera.")
  client_print(id,print_chat,"Admin usunal graczowi %s item za zlamanie zasad serwera.", name)
}

Warning: Loose indentation on line 23
Error: Undefined symbol "arq" on line 24
Warning: Expression has no effect on line 24
Error: Expected token: ";", but found ")" on line 24
Error: Invalid expression, assumed zero on line 24
Error: Too many error messages on one line on line 24

Co jest zle?
Edited by Manimatrix, 17.01.2010 15:21.
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 17.01.2010

Literówki itp.
/* Plugin generated by AMXX-Studio */
#define PLUGIN "Wymuszanie diablo"
#define VERSION "1.0"
#define AUTHOR "Manimatrix"

#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
register_concmd("amx_wywal", "concmd_wywal" ,ADMIN_KICK,"")
register_concmd("amx_wymus", "concmd_wymus" ,ADMIN_KICK,"")
}

public concmd_wymus(id,level,cid)
{
if (!cmd_access(id,level,cid,2))
{
console_print(id, "Nie mozesz uzyc tej funkcji")
return PLUGIN_HANDLED
}

new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, 7)

if (!player)
{
console_print(id, "Nie znaleziono gracza ^"%s^"", arg)
return PLUGIN_HANDLED
}

new name[32]
get_user_name(player, name, 31)
client_cmd(id, "say /reset")
show_motd(player, "Reset statystyk zostal wymuszony przez admina. Najwyrazniej nie zgadzaly sie one z zasadami serwera.")
client_print(id,print_chat,"Gracz %s zostal zmuszony do zresetowania statystyk.", name)

return PLUGIN_HANDLED
}

public concmd_wywal(id,level,cid)
{
if (!cmd_access(id,level,cid,2))
{
console_print(id, "Nie mozesz uzyc tej funkcji")
return PLUGIN_HANDLED
}

new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, 7)

if (!player)
{
console_print(id, "Nie znaleziono gracza ^"%s^"", arg)
return PLUGIN_HANDLED
}

new name[32]
get_user_name(player, name, 31)
client_cmd(id, "say /drop")
show_motd(player, "Straciles item na skutek zlamania zasad serwera.")
client_print(id,print_chat,"Admin usunal graczowi %s item za zlamanie zasad serwera.", name)

return PLUGIN_HANDLED
}
Quote

  • +
  • -
manimatrix's Photo manimatrix 17.01.2010

Teraz to zamiast graczowi wymusic say /reset wywala mu motd a mi daje say /reset.
Edited by Manimatrix, 17.01.2010 15:49.
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 17.01.2010

No właściwie tak miałeś od początku.
Zamień to:
client_cmd(id, "say /reset") 
i
client_cmd(id, "say /drop")
na:
client_cmd(player, "say /reset") 
i
client_cmd(player, "say /drop")


player to gracz na którym ma być wykonana funkcja
id to osoba wpisująca komendę

A motd to przecież miał się wyświetlać graczowi.
Quote

  • +
  • -
manimatrix's Photo manimatrix 17.01.2010

Wreszcie dziala jak nalezy, dzięki wielkie.
Quote
Locked