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: mauladam - 2011. Május 31. - 18:51:23

Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Május 31. - 18:51:23
Sziasztok!
Most kezdtem el nézegetni az sscanf függvényt!
Írtam is egy parancsot a használatával, de ha beírom akkor \"SERVER:Unknown command!\"
Nem tudom mi lehet a hiba, a parancsaban van egy ki fwrite()-s dolog is.
A kód:
[pawn]#include <a_samp>
#include <zcmd>
#include <sscanf2>
new parancs[32], Float:x, Float:y, Float:z, Float:angle;
new position[100];
new ang[12];
new cmd[32];
CMD:ctele(playerid, params[]) {
    if(sscanf(params, \"s[50]\",parancs)) {
        SendClientMessage( playerid, 0xFFFF00AA, \"Használat: /ctele [késõbbi parancs]\" );
    }
else
{
   GetPlayerPos(playerid, x,y,z);
   GetPlayerFacingAngle(playerid, angle);
   format(cmd, sizeof(cmd), \"CMD:%s(playerid)\\r\\n\", cmd);
   format(position, sizeof(position), \"      SetPlayerPos(playerid, %f, %f, %f);\\r\\n\", x, y, z);
   format(ang, sizeof(ang), \"      SetPlayerFacingAngle(playerid, %f);\\r\\n\", angle);
   new File:tele=fopen(\"tele.txt\", io_append);
   fwrite(tele, cmd);
   fwrite(tele, \"{\\r\\n\");
        fwrite(tele, position);
   fwrite(tele, ang);
   fwrite(tele, \"      SendClientMessage(playerid, 0xFFFF00AA, \'Sikeres teleportálás!\');\\r\\n\");
   fwrite(tele, \"      return 1;\");
        fwrite(tele, \"}\\r\\n\");
   fclose(tele);
   SendClientMessage(playerid, 0xFFFF00AA, \"Sikeresen létrehoztad a teleportot, most menj be a scriptfiles mappába, nyitsd meg a tele.txt fájlt, és tedd bele a benne lévõ kódot a GM-edbe/FS-be.\");
}
return 1;
}[/pawn]
Lehet, hogy nagyon alap dolgot rontottam el, de hát a kezdet mindíg nehéz  :)
Köszi a segítséget!
Cím: sscanf + ZCMD hiba
Írta: ZeRo - 2011. Május 31. - 19:22:37
Ebben a konkrét szkriptben nem látok hibát, esetleg a \'parancs\' karakterlánc méretezésében; a sscanf függvénnyel 50-re hivatkozol, de csak 32 cellásnak deklaráltad.
Az lehet hiba esetleg, hogy a játékmódban és a filterszkript(ek)ben nem használod a zcmd-t.
Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Május 31. - 19:26:36
Akkor azt mondod, hogy a gamemode elejére is kell az #include <zcmd>?
De annak miköze van ehhez az FS-hez?
(Am egy alap grandlarc 1 van bent, mert gm et még nem írtam)
A cellákat kijavítom, és megpróbálom úgy! :)
E: Javítottam, de így sem jó, mi lehet még a gond?
Cím: sscanf + ZCMD hiba
Írta: ZeRo - 2011. Május 31. - 19:42:51
Idézetet írta: mauladam date=1306862796\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"8492\" data-ipsquote-contentclass=\"forums_Topic
Az a baj hogy más scriptekben is ZCMD-t használok?
De az miért lenne baj? nem értelek.
 


Az lehet hiba esetleg, hogy a játékmódban és a filterszkript(ek)ben nem használod a zcmd-t.
 
[/quote]


Egyébként ha jól emlékszem, akkor filterszkripteknél a zcmd függvénykönyvtár beágyazása elõtt használnod kell a define direktívát így:
[pawn]
#define FILTERSCRIPT
//Fejállományok beágyazása
#include < a_samp >
#include < zcmd >
// ...
[/pawn]
Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Május 31. - 20:01:14
így sem jó, nem tudom mi lehet a gond :(
Cím: sscanf + ZCMD hiba
Írta: Zsolesszka - 2011. Május 31. - 20:45:53
Nem kerestem mi lehet a gond inkább átírtam kicsit:
Íme:
 

#include <a_samp>
#define FILTERSCRIPT
#include <zcmd>
#include <sscanf2>
public OnFilterScriptInit()
{
cmd_ctele(0, \"teszt\");
return 1;
}
CMD:ctele(playerid, params[])
{
new
str[128];
if(sscanf(params, \"s[128]\", str))
        SendClientMessage( playerid, 0xFFFF00AA, \"Használat: /ctele [késõbbi parancs]\" );
else if(strlen(str) > 32) SendClientMessage(playerid, 0xFFFF00AA, \"Leendõ teleport parancs névnek maximum 32 karakterbõl álló nevet adhatsz.\");
else
{
new
   Float:x,
   Float:y,
   Float:z,
   Float:angle;
new
   File:tele = fopen(\"tele.txt\", io_append);
if(tele)
{
   format(str, sizeof str, \"CMD:%s(playerid)\\r\\n{\\r\\n\", str);
   fwrite(tele, str);
   GetPlayerPos(playerid, x, y, z);
   GetPlayerFacingAngle(playerid, angle);
   format(str, sizeof str, \"   SetPlayerPos(playerid, %f, %f, %f);\\r\\n   SetPlayerFacingAngle(playerid, %f);\\r\\n\", x, y, z, angle);
   fwrite(tele, str);
   fwrite(tele, \"   SendClientMessage(playerid, 0xFFFF00AA, \\\"Sikeres teleportálás!\\\");\\r\\n   return 1;\\r\\n}\\r\\n\");
   fclose(tele);
   SendClientMessage(playerid, 0xFFFF00AA, \"Sikeresen létrehoztad a teleportot, most menj be a scriptfiles mappába, nyitsd meg a tele.txt fájlt, és tedd bele a benne lévõ kódot a GM-edbe/FS-be.\");
}
}
return 1;
}
Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Május 31. - 21:15:42
:( :@
Így sem megy... nem tudom miért, error nincs meg semmi.
Cím: sscanf + ZCMD hiba
Írta: TengeriMalac - 2011. Május 31. - 21:36:46
#include <a_samp>
#include <zcmd>
#include <sscanf2>
CMD:ctele(playerid, params[])
{
    new str[128];
    if(sscanf(params, \"s[128]\", str)) return SendClientMessage( playerid, 0xFFFF00AA, \"Használat: /ctele [késõbbi parancs]\");
    if(strlen(str) > 32) return SendClientMessage(playerid, 0xFFFF00AA, \"Leendõ teleport parancs névnek maximum 32 karakterbõl álló nevet adhatsz.\");
    new
         Float:x,
         Float:y,
         Float:z,
         Float:angle;
    new File:tele = fopen(\"tele.txt\", io_write);
    format(str, sizeof str, \"CMD:%s(playerid)\\r\\n{\\r\\n\", str);
    fwrite(tele, str);
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, angle);
    format(str, sizeof str, \"   SetPlayerPos(playerid, %f, %f, %f);\\r\\n   SetPlayerFacingAngle(playerid, %f);\\r\\n\", x, y, z, angle);
    fwrite(tele, str);
    fwrite(tele, \"   SendClientMessage(playerid, 0xFFFF00AA, \\\"Sikeres teleportálás!\\\");\\r\\n   return 1;\\r\\n}\\r\\n\");
    fclose(tele);
    SendClientMessage(playerid, 0xFFFF00AA, \"Sikeresen létrehoztad a teleportot, most menj be a scriptfiles mappába, nyitsd meg a tele.txt fájlt, és tedd bele a benne lévõ kódot a GM-edbe/FS-be.\");
    return 1;
}
Cím: sscanf + ZCMD hiba
Írta: Zsolesszka - 2011. Június 01. - 08:59:41
@maulaadam
Ha így se mûködik akkor valószínûleg annyi filterscriptet próbálsz alkalmazni hogy szegény samp.exe nem tud vele mit kezdeni.
Hiába van megadva hogy maximum 16 filterscriptet tud kezelni olyan 8-9 után már kicsit megzakkan.
A másik ha zcmd parancs feldolgozó rendszert használsz egy filterscriptben akkor az összes többiben is ezt kellene használni sõt a game módban is.
Ahogy postoltam úgy felse kell menni a szerverre a parancsot beírni tesztelésként már eleve létre kell hoznia ezt a fájlt, ezzel a tartalommal:
 
CMD:teszt(playerid)
{
SetPlayerPos(playerid, 0.000000, 0.000000, 0.000000);
SetPlayerFacingAngle(playerid, 0.000000);
SendClientMessage(playerid, 0xFFFF00AA, \"Sikeres teleportálás!\");
return 1;
}
[/quote]
Esetleg elárulnád hány darab filterscriptet használsz egyszerre?
Vagy még jobb ha úgy próbálnád ahogy Tengerimalac is próbálná elmagyarázni. (Minden egyéb filterscripthez szükséges dolgot eltávolítva, bemásolja amit postoltam, old meg alapon.)
Magyarázat:
Talán arra akar utalni hogy a parancsot másold a game módba, természetesen e két inculde sort is oda biggyeszteni ha még nem lenne benne. :angel:
[pawn]
#include <zcmd>
#include <sscanf2>
[/pawn]
Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Június 01. - 12:56:31
Összesen csak ez az egy filterscript van, amit használok, ne hogy összekavarjon valamit, ha tesztele, akkor mindíg csak a készülõ script van betéve. :)
Megpróbálom úgy, és jelzem az eredményt!
Sehogy sem jó! :\'(
Cím: sscanf + ZCMD hiba
Írta: Zsolesszka - 2011. Június 01. - 21:52:34
Tölts le másik zcmd.inc fájlt és azzal alakítsd át a filterscriptet. Más ötletem már nincs.
Csak annyit hogy próbálkozz elõbb vagy utóbb jó lesz a parancs mûködik tesztelve.
Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Június 02. - 15:07:34
Ok. :)
Akkor próbálkozok majd ;D!
MEGOLDOTTAM!
Még 1 kérdésem lenne: ha helyesen írom be a parancsot, akkor is a használatos errort kapom vissza.
Miért lehet?(A kódban nem találok hibát)
Cím: sscanf + ZCMD hiba
Írta: Zsolesszka - 2011. Június 02. - 21:18:47
Idézetet írta: mauladam date=1307020054\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"8492\" data-ipsquote-contentclass=\"forums_Topic
Ok. :)
Akkor próbálkozok majd ;D!
MEGOLDOTTAM!
Még 1 kérdésem lenne: ha helyesen írom be a parancsot, akkor is a használatos errort kapom vissza.
Miért lehet?(A kódban nem találok hibát)
 
What?
használatos error[/quote]
Cím: sscanf + ZCMD hiba
Írta: mauladam - 2011. Június 02. - 21:48:59
Ezt is megoldottam! mindenkinek köszönöm a rávezetés és a tippeket  :) Zárok