-
Hi az lenne a kérdésem h erre vajon miért ír hibát és, hogy ez vajon így mûködõ képes ötlet-e?
célom ezzel, hogy letudjam kérni a ratiot egy változóban
kod:
stock GetPlayerRatio(playerid)
{
new Float:ratio;
new halal[MAX_PLAYERS];
if(PlayerInfo[playerid][Deaths] == 0)
{
halal[playerid] = 1;
}
else
{
halal[playerid]=PlayerInfo[playerid][Deaths];
}
ratio=GetPlayerScore(playerid)/halal[playerid];
return ratio;
}
hiba:
C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(952) : error 017: undefined symbol \"Deaths\"
C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(958) : error 017: undefined symbol \"Deaths\"
C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(961) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
u.i.: mielõtt azt mondja valaki h nincs definiálva a Deaths annak mondom h definiálva van a mód elején.
-
Funkción kívül van? Már mint a definiálás
-
igen mód leg elején az include-ok alatt
-
Akkor viszont nem tudom.. Ugyanúgy írtad le? Mert nekem is volt már olyan, hogy létrehoztam, de nem úgy írtam le ahogyan létrehoztam
-
enum pInfo
{
deaths,
Tk,
Admin
}
new PlayerInfo[MAX_PLAYERS][pInfo];
stock GetPlayerRatio(playerid)
{
new Float:ratio;
new halal[MAX_PLAYERS];
if(PlayerInfo[playerid][Deaths] == 0)
{
halal[playerid] = 1;
}
else
{
halal[playerid]=PlayerInfo[playerid][Deaths];
}
ratio=GetPlayerScore(playerid)/halal[playerid];
return ratio;
}
Dupla hozzászólás automatikusan összefûzve. ( 2013. december 09. - 18:42:24 )
valóban elnéztem kis \"D\" betû helyett nagyot irtam de akkor is marad még 1 hiba ez:
C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(961) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
abban a sorban ez van:
return ratio;
-
Az enumba kis betûvel írtad a deaths -t de a függvényhez Deaths -t írtál.. Kis és nagybetû is számít
-
Figyelj a kis- és nagybetûkre. A ratio elé pedig nem kell Float, ha egyszer intként kezeled.. Amúgy erre van külön téma is...
-
A tag mismatch azt jelenti, hogy rossz formátumú. Tehát itt ahogy Dfoglalo írta töröld ki a Float-ot, mert az lebegõpontos változó.(pl.: 3,14)
-
A tag mismatch azt jelenti, hogy rossz formátumú. Tehát itt ahogy Dfoglalo írta töröld ki a Float-ot, mert az lebegõpontos változó.(pl.: 3,14)
[/quote]
Szerintem egyzserûbb valós számnak hívni :D Habár itt SAMP-on tényleg lebegõpontosnak szokás hívni.
Amúgy ez a cucc mi a s*@rra jó? ???
Látom nagyon kezdõ vagy. Máskor a kiemelt mában kérdezz errort, valamint ha ráguglizol, azonnal kidobja a megoldást... A kis- és nagybetûkre pedig figyelj oda! Float pedig akkor kell, ha pl. egy koordinátát tárolsz el egy változóba. Te most sima számot, integert adsz értekül a változóhoz, nem pedig floatot.
-
na most hibát nem ír de nem is jelenik meg a ratio a textdrawban :/
ha az \"Amúgy ez a cucc mi a s*@rra jó? ???\"-t erre a kódra értetted az lenne a célom ezzel h úgy letudjam kérni a ratiót mint pl a pinget a GetPlayerPing(playerid)-el
-
Másold be a textdrawos részt is.
Elemeztem...
stock GetPlayerRatio(playerid)
{
new ratio; // Létrehozol egy ratio nevû változót
new halal[MAX_PLAYERS]; // Meg egy halalt is
if(PlayerInfo[playerid][Deaths] == 0) // Ha a deaths egyenlõ 0-val
{
halal[playerid] = 1; // A halalt beállítod 1-re
}
else // De ha nem
{
halal[playerid]=PlayerInfo[playerid][Deaths]; // Akkor beállítod a halal változó érteket annyira, amennyi a deaths változó érteke
}
ratio=GetPlayerScore(playerid)/halal[playerid]; // Majd lekérdezed a játékos pontját, amit elosztasz a halal változó ertékével, és az eredményt megadod a ratio változó értékeként
return ratio; // Visszatérsz a ratioval
}
WTF?!
Na mindegy, a te dolgod... Én abban segítek, amiben kéred. Az már másik történet, hogy hiba nélkül milyen eredmény jön ki, ami mégis hibás, na mindegy...
-
onplayer conect alatt:
rat[playerid] = TextDrawCreate(454.000000, 437.000000, \"~g~RATIO:0.00\");
TextDrawBackgroundColor(rat[playerid], 255);
TextDrawFont(rat[playerid], 1);
TextDrawLetterSize(rat[playerid], 0.500000, 1.000000);
TextDrawColor(rat[playerid], -1);
TextDrawSetOutline(rat[playerid], 1);
TextDrawSetProportional(rat[playerid], 1);
TextDrawHideForPlayer(playerid,rat[playerid]);
spawnnál és halálnál:
new TD7[30];
format(TD7,sizeof(TD7),\"~g~RATIO:%0.2f\",GetPlayerRatio(playerid));
TextDrawHideForPlayer(playerid,rat[playerid]);
TextDrawSetString(rat[playerid],TD7);
TextDrawShowForPlayer(playerid,rat[playerid]);
-
Miért %0.2f? Miért nem %d vagy inkább %i? ???
-
mivel mindenhol így volt megadva mivel a ratió igy néz ki mindenhol Ratio:0.00
pl: Ladminban igy van:
Ratio: %0.2f\", Float:PlayerInfo[player1][Kills]/Float:PlayerInfo[player1][Deaths])
ami a játékban igy néz ki Ratio:0.00
-
De amivel visszatérsz, az továbbra is int, nem float... Akkor miért valós számot akarsz kiiratni? Vagy ha valóssat ajarsz kiírni, akkor mindent floatnak adj meg elõtte is.
A téma legelején is igazán mondhattad volna, hogy egy valós számot szeretnél kiírni, és akkor nem a float eltûntetésére mentünk volna a hibaüzenetbõl adódóan...
Mostmár legalább tudjuk, hogy pontosan mit is szeretnél.
-
ezért volt az elején a ratio float ként megadva....
-
Csak akkor még nem igazán értettük, hogy mit szeretnél...
new halal = 0[MAX_PLAYERS];
new oles = 0[MAX_PLAYERS];
new Float:ratio[MAX_PLAYERS];
new string[128];
public OnPlayerDeath(playerid, killerid, reason)
{
halal[playerid]++;
oles[killerid]++;
SetPlayerScore(killerid, oles);
ratio[playerid] = oles[playerid]%halal[playerid];
ratio[killerid] = oles[killerid]%halal[killerid];
format(string, sizeof(string), \"~w~Az Ölés/Halál arányod %0.2f~n~~r~Rontottad!\", ratio[playerid]);
GameTextForPlayer(playerid, string, 5000, 6);
format(string, sizeof(string), \"~w~Az Ölés/Halál arányod %0.2f~n~~g~Javítottad!\", ratio[killerid]);
GameTextForPlayer(playerid, string, 5000, 6);
return 1;
}
Azt hiszem, hogy ez kéne neked.
É-é-én n-nem vagyok lo-ó lopós :D
-
Neeem vagy lopós csak én írtam meg az egészet. xD( Ez az én kódom úgy adogasd vegyed :D )
-
na m1 akkor... marad a régi módszer ami már mûködött egyszer