Szerző Téma: szerver parancs  (Megtekintve 1378 alkalommal)

szerver parancs
« Dátum: 2011. Március 26. - 07:16:51 »
0 Show voters
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

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
szerver parancs
« Válasz #1 Dátum: 2011. Március 26. - 07:51:42 »
0 Show voters
Véletlenül nem használsz ZCMD-t és alap parancs feldolgozó cuccot? (strcmp, strtok) Ha igen akkor ez lesz a baj

szerver parancs
« Válasz #2 Dátum: 2011. Március 26. - 08:17:13 »
0 Show voters
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)

szerver parancs
« Válasz #3 Dátum: 2011. Március 26. - 08:31:21 »
0 Show voters
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
 
  • ha a beírt parancs return 0; -val tér vissza.
  • ha a parancsban egy nem létrehozott memória cellára történik a hivatkozás,

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);
}

szerver parancs
« Válasz #4 Dátum: 2011. Március 26. - 08:50:27 »
0 Show voters
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

szerver parancs
« Válasz #5 Dátum: 2011. Március 26. - 09:21:03 »
0 Show voters
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.
« Utoljára szerkesztve: 2011. Március 26. - 09:25:04 írta Zsolesszka »

szerver parancs
« Válasz #6 Dátum: 2011. Március 26. - 09:45:06 »
0 Show voters
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.

Nem elérhető Stray

  • 617
    • Profil megtekintése
szerver parancs
« Válasz #7 Dátum: 2011. Március 26. - 16:55:25 »
0 Show voters
@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
« Utoljára szerkesztve: 2011. Március 26. - 16:58:02 írta straY' »

szerver parancs
« Válasz #8 Dátum: 2011. Március 26. - 17:30:18 »
0 Show voters
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.

Nem elérhető Stray

  • 617
    • Profil megtekintése
szerver parancs
« Válasz #9 Dátum: 2011. Március 26. - 18:37:37 »
0 Show voters
Rendben. Akkor túltárgyaltuk.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal