Szerző Téma: Hibát ír ki  (Megtekintve 525 alkalommal)

Nem elérhető KrisT

  • 106
    • Profil megtekintése
Hibát ír ki
« Dátum: 2014. augusztus 16. - 22:06:39 »
0 Show voters
Sziasztok! Egy parancs nem mûködik és ezt a hibát írja: error 035: argument type mismatch (argument 1)
Mi lehet a baj?
nev -definiálva [MAX_PLAYER_NAME];-ra
 
CMD:setarmor(playerid,params[])
{
if(IsPlayerConnected(playerid) && Belepve[playerid] == 1)
{
    if(JatekosInfo[playerid][AdminSzint] >= 3)
    {
        new id[MAX_PLAYER_NAME];
        new armormennyiseg;
        if(armormennyiseg >= 0 && armormennyiseg <= 100)
        {
      if(sscanf(params,\"ii\",id,armormennyiseg)) return SendClientMessage(playerid,COLOR_LIGHTRED,\"Használata: /setarmor [Játékos neve/id] [armor mennyisége]\");
        {
               
               new uzenet[256];
               new jatekosneve[MAX_PLAYER_NAME];
                      GetPlayerName(playerid,nev,sizeof(nev));
                      GetPlayerName(id,jatekosneve,sizeof(jatekosneve));
                      SetPlayerArmour(id,armormennyiseg);
               format(uzenet,sizeof(uzenet),\"Megváltoztattad %s Armorját %d -ra/re\",jatekosneve,armormennyiseg);
               SendClientMessage(playerid,COLOR_LIGHTBLUE,uzenet);
               printf(\"%s megáltoztatta %s Armorját %d -ra/re\",nev,jatekosneve,armormennyiseg);
        }
        }
        else SendClientMessage(playerid,COLOR_LIGHTRED,\"Az Armor menyniségnénk 0-100 között kell lenni\");
    }
    else SendClientMessage(playerid,COLOR_LIGHTRED,\"Nem elegendõ az adminszinted ehhez a parancshoz, vagy nem vagy admin!\");
}
else SendClientMessage(playerid,COLOR_LIGHTRED,\"Nem vagy belépve!\");
return 1;
}

 
Hibát a :
                      GetPlayerName(id,jatekosneve,sizeof(jatekosneve));
                      SetPlayerArmour(id,armormennyiseg);
sorhoz írja
« Utoljára szerkesztve: 2014. augusztus 17. - 05:40:06 írta ZyZu. »

Nem elérhető M1A1

Hibát ír ki
« Válasz #1 Dátum: 2014. augusztus 16. - 22:13:54 »
0 Show voters
new id[MAX_PLAYER_NAME];

 
Helyett:
 
new id;

 

sscanf(params,\"ii\",id,armormennyiseg)

 
Helyett:
 
sscanf(params,\"ui\",id,armormennyiseg)

 

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. Augusztus 16. 22:35:30[/time] )

Mert ugye a felhasználók ID-je integer típusú, de te string-nek defináltad. Nem csoda, hogy nem fogadta el :)
 
sscanf(params,\"ui\",id,armormennyiseg)

 
sscanf-nél pedig mikor felhasználót kell megadni egy parancs paraméteréül, a formátumnál a \"u\" specifikátort kell megadnod. Így a sscanf a felhasználó ID-jét adja vissza a változónak, akkor is, ha a játékos nevét írták a parancs paraméterében. Pl.: tegyük fel, hogy az \"X_Y\" nevû játékos ID-je 21.
Beírod:
/setarmor X_Y 100
vagy
/setarmor 21 100
Mindkét esetben a sscanf az \"id\" nevû változóba 21-et fog visszaadni.
Ha valaki elírta a játékos nevét, vagy ID-jét, vagy a játékos éppen nincs fent a szerveren, a sscanf függvény visszatérési értéke nem 0 lesz. Így lehet ellenõrizni, hogy a játékos megfelelõen használta-e az utasítást. Ha nem 0, akkor kiírjuk neki az utasítás használatát.
« Utoljára szerkesztve: 2014. augusztus 16. - 22:37:38 írta M1A1 »

Nem elérhető KrisT

  • 106
    • Profil megtekintése
Hibát ír ki
« Válasz #2 Dátum: 2014. augusztus 18. - 23:29:29 »
0 Show voters
Idézetet írta: M1A1 date=1408220034\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50140\" data-ipsquote-contentclass=\"forums_Topic

new id[MAX_PLAYER_NAME];

 
Helyett:
 
new id;

 

sscanf(params,\"ii\",id,armormennyiseg)

 
Helyett:
 
sscanf(params,\"ui\",id,armormennyiseg)

 

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. Augusztus 16. 22:35:30[/time] )

Mert ugye a felhasználók ID-je integer típusú, de te string-nek defináltad. Nem csoda, hogy nem fogadta el :)
 
sscanf(params,\"ui\",id,armormennyiseg)

 
sscanf-nél pedig mikor felhasználót kell megadni egy parancs paraméteréül, a formátumnál a \"u\" specifikátort kell megadnod. Így a sscanf a felhasználó ID-jét adja vissza a változónak, akkor is, ha a játékos nevét írták a parancs paraméterében. Pl.: tegyük fel, hogy az \"X_Y\" nevû játékos ID-je 21.
Beírod:
/setarmor X_Y 100
vagy
/setarmor 21 100
Mindkét esetben a sscanf az \"id\" nevû változóba 21-et fog visszaadni.
Ha valaki elírta a játékos nevét, vagy ID-jét, vagy a játékos éppen nincs fent a szerveren, a sscanf függvény visszatérési értéke nem 0 lesz. Így lehet ellenõrizni, hogy a játékos megfelelõen használta-e az utasítást. Ha nem 0, akkor kiírjuk neki az utasítás használatát.
 
Nagyon  szépen köszönöm! SOkat tanultam belõle! :)

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Hibát ír ki
« Válasz #3 Dátum: 2014. augusztus 18. - 23:52:54 »
0 Show voters
[mod]Legközelebb használd kérlek a kiemelt témát![/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal