GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: DareDevil - 2011. március 26. - 07:16:51

Cím: szerver parancs
Írta: DareDevil - 2011. március 26. - 07:16:51
Sziasztok!
A módomba elég sok parancs után (majdnem mind) azt irja ki a szerver hogy: Server Unknow. A pawno hibát nem ir ki, és nem tudom mi lehet a baja, a return 0; át a végén már próbáltam 1 re is állitani.
üdv
Cím: szerver parancs
Írta: DrAkE - 2011. március 26. - 07:51:42
Véletlenül nem használsz ZCMD-t és alap parancs feldolgozó cuccot? (strcmp, strtok) Ha igen akkor ez lesz a baj
Cím: szerver parancs
Írta: DareDevil - 2011. március 26. - 08:17:13
dcmd-vel dolgozok mivel kezdõ vagyok (scriptelésbe) ezért azzal kezdtem. strcmp az benne van a parancsba
mivel mindegyik úgy kezdõdik hogy
if(strcmp(.........) ==0)
Cím: szerver parancs
Írta: Zsolesszka - 2011. március 26. - 08:31:21
Esetleg másolnál ide olyan parancsot amelyiknél ezt az üzenetet írja ki \"Unknown Command\".
A lényeg ami a lényeg ezen figyelmeztetés abban az esetben jelenik meg
 

ezt a samp programozása hibásnak ítéli meg és megjelenik a fentebb említett szöveg.
 

Mit is jelent az utóbbi?
 

new
     valami[MAX_PLAYERS];
// Ugye a max_players értéke alapból 500 (0.3 server)
for(new i; i <= MAX_PLAYERS; i++)
{
     valami = random(10);
}
 
Létrehoztunk egy 500-as változót ami 0-tól 499 tart \"valami\" néven.
De a for ciklusban 0-tól 500-ig futtatjuk le ennek a változó celláinak érték megadását,
ami 501 szer fut le és már itt is van egy olyan hiba amirõl írtam feljebb.
És itt a helyes kód egyetlen egy apró eltéréssel:
 

for(new i; i < MAX_PLAYERS; i++)
{
     valami = random(10);
}
Cím: szerver parancs
Írta: DareDevil - 2011. március 26. - 08:50:27
if(strcmp(\"/lp2\", cmdtext, true, 10) ==0)
{
   SetPlayerPos(playerid,sx[playerid],sy[playerid],sz[playerid]);
   SendClientMessage(playerid, 0x008000AA, \"Betöltötted a poziciódat\");
   return 1;
}
ennél pl kiirja
Cím: szerver parancs
Írta: Zsolesszka - 2011. március 26. - 09:21:03
Idézetet írta: DareDevil date=1301125827\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7076\" data-ipsquote-contentclass=\"forums_Topic
if(strcmp(\"/lp2\", cmdtext, true, 10) ==0)
{
   SetPlayerPos(playerid,sx[playerid],sy[playerid],sz[playerid]);
   SendClientMessage(playerid, 0x008000AA, \"Betöltötted a poziciódat\");
   return 1;
}
ennél pl kiirja
 
A létrehozott változók így néznek ki?
 

new
Float:sx[MAX_PLAYERS],
Float:sy[MAX_PLAYERS],
Float:sz[MAX_PLAYERS];

 
ha igen akkor az Unknown Command felirat mellett megjelenik ez a SendClientMessage szöveg is \"Betöltötted a pozíciódat\"?
Esetleg próbáld meg így is:
 

if(strcmp(\"/lp2\", cmdtext, true) == 0)
{
SetPlayerPos(playerid, sx[playerid], sy[playerid], sz[playerid]);
SendClientMessage(playerid, 0x008000AA, \"Betöltötted a poziciódat\");
return 1;
}

 
(de ez nem lehet a hiba oka valahol máshol kell keresni csak találgatni tudok ennyi információból)
Említetted dcmd-t is használsz esetleg lenne másik parancs is ami /lp2 lenne?
Lehet a hiba akár egy másik filterscriptben is.
(mondjuk ha a használt filterscript már zcmd-t használ)
Látod már ez a pár sor is mennyi kérdést vet fel, több adat kell hogy meglehessen állapítani a hiba forrását.
Én teszteltem a feljebb idézett parancsot mûködik rendesen nincs vele gond persze a feljebb kiírt változókat használtam, az okot máshol kell keresni.
Cím: szerver parancs
Írta: DareDevil - 2011. március 26. - 09:45:06
A változók igy vannak megadva, a hibát is megtaláltam (vagyis lehet hogy az volt az) de már nem irja ki a Server Unknow-ot.
Cím: szerver parancs
Írta: Stray - 2011. március 26. - 16:55:25
@DareDevil: Filterscriptek is bezavarhatnak. Azoknál is állítsd át a visszatérési értéket 0-ról 1-re.
@Zsoleszka: MAX_PLAYERS helyett használd a GetMaxPlayers() -t. Mivel a MAX_PLAYERS értéke 500, míg a GetMaxPlayers-é csak annyi ahány férõhelyes a szerver.
http://wiki.sa-mp.com/wiki/GetMaxPlayers
Cím: szerver parancs
Írta: Zsolesszka - 2011. március 26. - 17:30:18
Idézetet írta: straY\' date=1301154925\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7076\" data-ipsquote-contentclass=\"forums_Topic
@DareDevil: Filterscriptek is bezavarhatnak. Azoknál is állítsd át a visszatérési értéket 0-ról 1-re.
@Zsoleszka: MAX_PLAYERS helyett használd a GetMaxPlayers() -t. Mivel a MAX_PLAYERS értéke 500, míg a GetMaxPlayers-é csak annyi ahány férõhelyes a szerver.
http://wiki.sa-mp.com/wiki/GetMaxPlayers
 
Köszi.
Ez így van ha megfelelõen van használva, persze ez függ attól is épp mennyi a slot mert lehet 400 slotnál már nem gyorsabb a GetMaxPlayers mint a MAX_PLAYERS, persze ez attól is függ épp hogy használod ciklus utasításokban az imént említett funkciót.
Én maradok ennél az eljárásnál, ha nem gond:
 

#undef MAX_PLAYERS
#define MAX_PLAYERS 50 // mivel ennyi a jelenlegi számomra, -unkra bérelt szerveren a slotok száma.
Cím: szerver parancs
Írta: Stray - 2011. március 26. - 18:37:37
Rendben. Akkor túltárgyaltuk.