Jest troche pozno i moze stad moj problem z mysleniem ale nie wiem jak sprawdzic czy jest wartosc w miejscu
g_IPDescription[id] potrzebuje warunek ktory sprawdza czy w tablicy jest tekst jesli jest to warunek1 else warunek2
if g_IPDescription[id] jest rozne od 0 to
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.
|
Guest Message by DevFuse
Sprawdzenie czy pobrano wartość
Temat rozp. ziutek_82, 15.11.2009 04:44
2 odpowiedzi w tym temacie
#1
Napisano 15.11.2009 04:44
#2
Napisano 15.11.2009 10:37
if( g_IPDescription[id] != 0){ //jakis kod else { //inny kod }
#3
Napisano 15.11.2009 19:08
Nie udalo mi sie w ten sposob skompilowac
plugin ma kod
Chce zrobic cos takiego, ze gdy adresu nie ma w pliku to g_IPDescription[id] powinno byc rowne 0
czyli
if( g_IPDescription[id] != 0){
console_print(id,"%d - %s - %s - NonSteam - %s ", players[a], name, userip,g_IPDescription[players[a]])
}
else console_print(id,"%d - %s - %s - NonSteam", players[a], name, userip)
Roznica subtelna ale podoba mi sie gdy jest "-" pomiedzy wyswietlanymi informacjami a gdy g_IPDescription[id] jest pusty to zostaje mi "-" na koncu linijki
obecnie przy probie kompilacji mam blad
Error: Array must be indexed (variable "g_IPDescription") on line 71
Error: Invalid expression, assumed zero on line 73
[ Dodano: 17-11-2009, 05:10 ]
No dobra uzyskalem dane przy pomocy komendy
if(str_to_float(g_IPDescription[players[a]])!=0)
Plugin dziala jak nalezy i wypisuje Opis sieci przy pomocy g_IPDescription
Mam tylko jedno pytanie, gdy pobieram tekst przy pomocy tej komendy
to tlumaczac na komputerowy
Jezeli zamien_dane_na_tekst(dane)jest rozny od zera to
warunek1
w przeciwnym wypadku
warunek2
Nie wiem tylko czy ja to dobrze sobie tlumacze ale jak dam ten warunek to komendy sa odwrotnie czyli jesli pobierze mi tekst z pliku czyli jest on rozny od zera to wykonuje warunek2
a gdy tego tekstu w pliku nie ma to robi warunek1
Jest mi ktos w stanie wytlumaczyc dlaczego tak sie dzieje ?
plugin ma kod
#include <amxmodx> #include <amxmisc> #define MAX_PLAYERS 32 #define MAX_DESCRIPTION_LEN 64 #define MAX_HOSTNAME_LEN 180 #define SHIFT_8 8 #define SHIFT_16 16 #define SHIFT_24 24 #define MAX_SUBNETS 1024 // Maximum records in ipdesc.ini file enum ChatColor { CHATCOLOR_YELLOW = 1, // Yellow CHATCOLOR_GREEN, // Green Color CHATCOLOR_TEAM_COLOR, // Red, grey, blue CHATCOLOR_GREY, // grey CHATCOLOR_RED, // Red CHATCOLOR_BLUE, // Blue } new PLUGINNAME[] = "ShowIP" new PLUGINVERSION[] = "1.61" new g_SubnetIP[MAX_SUBNETS] new g_SubnetMask[MAX_SUBNETS] new g_SubnetDescription[MAX_SUBNETS][MAX_DESCRIPTION_LEN + 1] new g_SubnetCount = 0 new g_IPDescription[MAX_PLAYERS + 1][MAX_DESCRIPTION_LEN + 1] new g_HostName[MAX_PLAYERS + 1][MAX_HOSTNAME_LEN + 1] new amx_showip_unknown public plugin_init() { register_plugin(PLUGINNAME, PLUGINVERSION, "ahtoh") register_cvar(PLUGINNAME, PLUGINVERSION, FCVAR_SERVER | FCVAR_SPONLY) register_concmd("amx_ip", "cmdShowIP", ADMIN_KICK,"- shows players IPs") new configsDir[64] get_configsdir(configsDir, sizeof(configsDir)-1) format(configsDir, sizeof(configsDir)-1, "%s/ipdesc.ini", configsDir) loadSubnets(configsDir) // Load IP Descriptions from ipdesc.ini } public cmdShowIP(id) { new mapname[32] new online = get_playersnum() new maxplayers = get_cvar_num ("sv_visiblemaxplayers") new players[32], inum, userip[16], name[32] get_mapname(mapname, 31) get_players(players, inum) console_print(id, "") console_print(id, "") console_print(id, "") console_print(id, "____________________________________________") console_print(id, "") console_print(id, " - Nazwa serwera: FragArena [FFA] @ FragArena.pl | HitMe.pl") console_print(id, " - IP Serwera: 91.203.133.28:27050") console_print(id, " - Biezaca mapa: %s", mapname) console_print(id, " - Graczy na serwerze: %d/%d", online, maxplayers) console_print(id, "") console_print(id, "Lista graczy:") for (new a = 0; a < inum; ++a) { get_user_ip(players[a],userip,sizeof(userip)-1,1) get_user_name(players[a], name, sizeof(name)-1) console_print(id, "%2d %-25.24s %-20s %-33.32s %s", players[a], name, userip, g_HostName[players[a]], g_IPDescription[players[a]]) } console_print(id, "") console_print(id, "____________________________________________") return PLUGIN_HANDLED } public client_authorized(id) { new userip[16] get_user_ip(id,userip,sizeof(userip)-1,1) get_ip_description(userip, g_IPDescription[id], MAX_DESCRIPTION_LEN) return PLUGIN_CONTINUE } // Find subnet description get_ip_description(const ip[], description[], maxlen) { new numIP = ip_to_num(ip) for (new i = 0; i < g_SubnetCount; i++) { if (apply_mask(numIP, g_SubnetMask[i]) == g_SubnetIP[i]) { copy(description, maxlen, g_SubnetDescription[i]) return 0 } } get_pcvar_string(amx_showip_unknown, description, maxlen) return -1 } // IP to NUM ip_to_num(const ip[]) { new n1[4], n2[4], n3[4], n4[4] new tmpStr[16] copy(tmpStr, sizeof(tmpStr)-1, ip) replace_all(tmpStr, sizeof(tmpStr)-1, ".", " ") if (parse(tmpStr, n1, sizeof(n1)-1, n2, sizeof(n2)-1, n3, sizeof(n3)-1, n4, sizeof(n4)-1) != 4) return -1 // wrong ip address return (str_to_num(n1) << SHIFT_24) + (str_to_num(n2) << SHIFT_16) + (str_to_num(n3) << SHIFT_8) + str_to_num(n4) } // this rounds ip to its subnet by given mask apply_mask(const numIP, const maskBit) { if (maskBit < 0 || maskBit > 32) return -1 // wrong mask new shift = 32 - maskBit return (numIP >> shift) << shift } loadSubnets(szFilename[]) { g_SubnetCount = 0 new File=fopen(szFilename,"r"); if (File) { new Text[256] new subnet[24], subnetIP[16], subnetMask[8] while(g_SubnetCount < MAX_SUBNETS && !feof(File)) { fgets(File,Text,sizeof(Text)-1); trim(Text) // comment or blank line if (Text[0]==';' || Text[0] == 0) { continue; } strbreak(Text, subnet, sizeof(subnet)-1, g_SubnetDescription[g_SubnetCount], MAX_DESCRIPTION_LEN) replace(subnet, sizeof(subnet)-1, "/", " ") if (parse(subnet, subnetIP, sizeof(subnetIP)-1, subnetMask, sizeof(subnetMask)-1) != 2) continue // wrong subnet g_SubnetIP[g_SubnetCount] = ip_to_num(subnetIP) g_SubnetMask[g_SubnetCount] = str_to_num(subnetMask) ++g_SubnetCount } } return 1 }Funkcja o ktora mi chodzi ma wyswietlac opis sieci pobany z pliku
Chce zrobic cos takiego, ze gdy adresu nie ma w pliku to g_IPDescription[id] powinno byc rowne 0
czyli
if( g_IPDescription[id] != 0){
console_print(id,"%d - %s - %s - NonSteam - %s ", players[a], name, userip,g_IPDescription[players[a]])
}
else console_print(id,"%d - %s - %s - NonSteam", players[a], name, userip)
Roznica subtelna ale podoba mi sie gdy jest "-" pomiedzy wyswietlanymi informacjami a gdy g_IPDescription[id] jest pusty to zostaje mi "-" na koncu linijki
obecnie przy probie kompilacji mam blad
Error: Array must be indexed (variable "g_IPDescription") on line 71
Error: Invalid expression, assumed zero on line 73
[ Dodano: 17-11-2009, 05:10 ]
No dobra uzyskalem dane przy pomocy komendy
if(str_to_float(g_IPDescription[players[a]])!=0)
Plugin dziala jak nalezy i wypisuje Opis sieci przy pomocy g_IPDescription
Mam tylko jedno pytanie, gdy pobieram tekst przy pomocy tej komendy
to tlumaczac na komputerowy
Jezeli zamien_dane_na_tekst(dane)jest rozny od zera to
warunek1
w przeciwnym wypadku
warunek2
Nie wiem tylko czy ja to dobrze sobie tlumacze ale jak dam ten warunek to komendy sa odwrotnie czyli jesli pobierze mi tekst z pliku czyli jest on rozny od zera to wykonuje warunek2
a gdy tego tekstu w pliku nie ma to robi warunek1
Jest mi ktos w stanie wytlumaczyc dlaczego tak sie dzieje ?
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych