Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Skrypcik ''Strzykawki''


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 karer

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:3
  • Lokalizacja:Zielona Góra
Offline

Napisano 17.05.2012 14:49

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <nvault>
#define PLUGIN "bio_strzykawka"
#define AUTHOR "karer"
#define VERSION "1.0"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "DeathMsg", "a")
}
public DeathMsg(){
new name[35]
new vaultkey[64],vaultdata[64]
new vaultkey1[64],vaultdata1[64]
new iKiller = read_data(1)
new iVictim = read_data(2)
new nazwakilla = get_user_name(iKiller,name,34)
if(is_user_alive(iKiller) && get_user_team(iKiller) != get_user_team(iVictim)){
set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 6.0)
show_hudmessage(iKiller, "Otrzymales 1 strzykawke !")
new g_vault = nvault_open("strzykawki.txt")
new pktnow = nvault_get(g_vault,vaultkey1,vaultdata1,255)
format(vaultkey,63,"%s",nazwakilla)
format(vaultdata,63,"%d",pktnow+1)
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
}


To mój pierwszy skrypt. Ma on polegać na tym, że po zabiciu kogos, agresor otrzymuje punkt (zapisuje sie w pliku strzykawki.txt). Czy ten skrypt jest dobrze napisany? Proszę o pomoc i krytykę.
  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 17.05.2012 23:04

nvault_open używasz raz na cały plugin, w plugin_init albo plugin_config najlepiej. Handler do niego zapisujesz w zmennej globalnej. Dodatkowo nie możesz pobrać nicku gracza, dopóki się nie upewnisz, że jest to gracz (mogą być no np. drzwi na mapie, jeśli ktoś zostanie przytrzaśnięty, albo inny obiekt zabijający), co sprawdza dobrze funkcja is_user_alive. retur powinien być również przed zamykającą klamrą funkcji lub nie powinno go być wcale (może być wcześniej, ale wtedy musisz go też użyć na końcu, inaczej będziesz miał warning przy kompilacji, nic strasznego ale zawsze coś :D)

Dodatkowo: kod z wcięciami jest dużo czytelniejszy

Poprawiony kod:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <nvault>
#define PLUGIN "bio_strzykawka"
#define AUTHOR "karer"
#define VERSION "1.0"

new g_vault
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "DeathMsg", "a")
g_vault = nvault_open("strzykawki.txt")
}
public DeathMsg(){
new name[35]

new vaultkey[64],vaultdata[64]
new vaultkey1[64],vaultdata1[64]

new iKiller = read_data(1)
new iVictim = read_data(2)

if(is_user_alive(iKiller) && get_user_team(iKiller) != get_user_team(iVictim)){
new nazwakilla = get_user_name(iKiller,name,34)

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 6.0)
show_hudmessage(iKiller, "Otrzymales 1 strzykawke !")

new pktnow = nvault_get(g_vault,vaultkey1,vaultdata1,255)
format(vaultkey,63,"%s",nazwakilla)
format(vaultdata,63,"%d",pktnow+1)
nvault_set(g_vault,vaultkey,vaultdata)
}
return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych