←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

optymalizacja kodu

Zablokowany

  • +
  • -
mounter - zdjęcie mounter 12.05.2010

L 05/12/2010 - 16:02:32: [AMXX] Run time error 10 (plugin "vip_bron.amxx") (native "give_item") - debug not enabled!
L 05/12/2010 - 16:02:32: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/12/2010 - 16:03:05: [FUN] Invalid player 24

plugin działa, lecz sypie błędy, jakieś pomysły nad optymalizacją skryptu?


/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>

#define PLUGIN "admin dostaje bron"
#define VERSION "1.0"
#define AUTHOR "naven"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "runda", 1);

}
public runda(id)
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
{
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"weapon_deagle")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
give_item(id, "item_assaultsuit")
give_item(id, "item_thighpack")
}
}

Odpowiedz

  • +
  • -
AmD - zdjęcie AmD 12.05.2010

do plugins ini przy pluginie dopisz debug i po sprawie :)
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 12.05.2010

nie po sprawie dopisz do plugins .ini debug spacje po nazwie pluginu i wtedy podaj logi
Odpowiedz

  • +
  • -
mounter - zdjęcie mounter 12.05.2010

po dopisaniu debug, logi wyglądają tak:

L 05/12/2010 - 17:34:27: [FUN] Invalid player 30
L 05/12/2010 - 17:34:27: [AMXX] Displaying debug trace (plugin "vip_bron.amxx")
L 05/12/2010 - 17:34:27: [AMXX] Run time error 10: native error (native "give_item")
L 05/12/2010 - 17:34:27: [AMXX]    [0] phpULPnFQ.sma::runda (line 22)
Odpowiedz

  • +
  • -
sbstn - zdjęcie sbstn 12.05.2010

Moduły na serwerze masz odblokowane?
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 12.05.2010

może jest błąd dlatego że dajesz na początku ammo ale do jakie jakiej broni
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 12.05.2010

a może pójść po tym info co jest w błędzie ?

[FUN] Invalid player 30

dodaj może jakiegoś krótkiego taska i ewentualne sprawdzenie is_user_alive
Odpowiedz

  • +
  • -
mounter - zdjęcie mounter 12.05.2010

moduły wszystkie odblokowane, spróbuje wywalić pierwsze linie z amunicji
pavulon, całkiem możliwe że błędy sypie tylko wtedy jak gracz z flagą t jest na spec, dzięki za radę

a czy da się to wszystko inaczej rozwiązać?
Odpowiedz

  • +
  • -
kyku - zdjęcie kyku 12.05.2010

zamiana tego
if (get_user_flags(id) & ADMIN_LEVEL_H)
na to
if ((get_user_flags(id) & ADMIN_LEVEL_H) && is_user_alive(id))
wystarczy
Użytkownik kyku edytował ten post 12.05.2010 17:30
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 12.05.2010

a potem tego
if ((get_user_flags(id) & ADMIN_LEVEL_H) && is_user_alive(id))
na
if (is_user_alive(id) && (get_user_flags(id) & ADMIN_LEVEL_H))
xD
Odpowiedz

  • +
  • -
mounter - zdjęcie mounter 12.05.2010

a potem tego

if ((get_user_flags(id) & ADMIN_LEVEL_H) && is_user_alive(id))
na
if (is_user_alive(id) && (get_user_flags(id) & ADMIN_LEVEL_H))
xD



sprawdzam najpierw na pierwszym warunku, zobaczymy :D
Odpowiedz

  • +
  • -
byCZUS - zdjęcie byCZUS 12.05.2010

Po optymalizacji


#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>

new g_bronie[][] = { "ammo_556nato", "ammo_556nato", "ammo_556nato", "weapon_deagle", "ammo_50ae",
"ammo_50ae", "ammo_50ae", "ammo_50ae", "ammo_50ae", "ammo_50ae", "ammo_50ae", "weapon_hegrenade",
"weapon_flashbang", "weapon_flashbang", "weapon_smokegrenade", "item_assaultsuit", "item_thighpack" }

public plugin_init()
{
register_plugin("admin dostaje bron", "1.0", "naven")
RegisterHam(Ham_Spawn, "player", "runda", 1);

}
public runda(id)
{
if(is_user_alive(id))
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
{
for(new i = 0; i < sizeof(g_bronie); i++)
fm_give_item(id, g_bronie[i])
}
}
}
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 12.05.2010

Nom teraz ok

BTW
if(is_user_alive(id))
        {
                if (get_user_flags(id) & ADMIN_LEVEL_H)
                {
działa identycznie jak
if(is_user_alive(id) && (get_user_flags(id) & ADMIN_LEVEL_H))
                {
bo operator && nie testuje drugiego operandu, gdy pierwszy jest zerem.

Czyli taki kod nikogo by nie zabił
if(0 && zabij_wszystkich_graczy()){}
Odpowiedz

  • +
  • -
ZiuTeK - zdjęcie ZiuTeK 13.05.2010

Nie znam sie na tym specjalnie ale tak z ciekawosci zapytam, co to za rodzaj amunicji chcesz dac temu graczowi ?
to na pewno z cs ?
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
...
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 13.05.2010

Nie znam sie na tym specjalnie ale tak z ciekawosci zapytam, co to za rodzaj amunicji chcesz dac temu graczowi ?
to na pewno z cs ?
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
...
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")

omg, jak nie wiedziałeś to mogłeś sprawdzić: Nazwy broni i ammo do give_item (+ speed) - Nieoficjalny polski support AMX Mod X
jakby nie było z CS'a to autor tematu lub ktoś inny już by to napisał...
Odpowiedz
Zablokowany