Das kannst du hiermit machen:
http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
Und dann als anklickbares Textdraw:
http://wiki.sa-mp.com/wiki/OnPlayerClickTextDraw
Beispiel Code:
http://forum.sa-mp.com/showthread.php?t=407045
Das kannst du hiermit machen:
http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
Und dann als anklickbares Textdraw:
http://wiki.sa-mp.com/wiki/OnPlayerClickTextDraw
Beispiel Code:
http://forum.sa-mp.com/showthread.php?t=407045
Jaein, aber deshalb sollte man die PWN Dateien haben. ![]()
Wenn du die beschaffen kannst, dann wäre das sicher die beste Möglichkeit das sinnvoll zu lösen. So sehe ich sonst keine andere Möglichkeit.
Ach ja, da war ja mal was.
Soweit ich weiß kam damals raus, dass es nur über die Position (Get[Dynamic]ObjectPos) möglich ist, wenn du nur die AMX hast, und es über einen anderen Code löschen willst.
Der Fehler tritt wenn ich diese Zeile auskommentiere jedoch bei der nächsten wo "KickPlayer" steht wieder auf.
Der Code ist korrekt, bei mir kompiliert er es auch ohne Probleme.
Hast du mal versucht, das KickPlayer umzubenennen, oder hast du den Stock nicht im Code, bzw. vielleicht durch ein #if "ausgeklammert"?
Gibt es eine Möglichkeit sich eine GetObjectVirtualWorld Funktion zu basteln die NUR für normale Objekte sind und keine Dynamische Objekte?
Was genau hast du denn vor? Dynamische Objekte sind nämlich auch "nur" normale Objekte, die eben wieder entfernt werden, wenn niemand in der Nähe ist.
Kannst du mal ein paar Zeilen um die Fehlerzeile herum posten, und die Fehlerzeile markieren?
@Simon2202
1.
Ja. Nur eben unter die <streamer> Include, falls du Streamer-Objekte nutzt.
2.
PVars müssen nicht zurück gesetzt werden, aber Arrays schon (new Array[MAX...]).
Prinzipiell bietet es sich an, immer alle Werte zurück zu setzen, das ist sauberer und man vermeidet Fehler.
3.
Normalerweise nicht, aber auch hier bietet es sich, wie bei Punkt 2, an um mögliche Fehler zu vermeiden.
@PawnStar
In der if-Zeile bei "GetVehicleSpeed" fehlt der zweite Parameter, nach vID (das get3d).
Ja, das geht auch mit den dynamischen Objekten des Streamers, wenn du entweder in der Include die Streamer Include inkludierst, oder die Include mit den Objekten unter die Streamer Include im Gamemode schreibst.
Ich nutze für sowas OneDrive, alternativ Google Drive, da hast du direkt die Möglichkeit Ordner zu erstellen und somit die Bilder zu kategorisieren. Außerdem kannst du individuelle Rechte auf die Ordner geben.
Zum Teil muss man die in den system32 Ordner einfügen, und manchmal auch in den Server Ordner, neben die samp-server.exe, das ist unterschiedlich.
Achte auch ganz genau auf den Dateinamen der dir als fehlend angezeigt wird, die sind zum Teil fast identisch.
EDIT: (Post unten)
@sunrizez
Möglicherweise, ja. Genau weiß ich das aber nicht, das ist so gut wie auf jedem PC anders. Ein Versuch ist es wert. ![]()
Poste bitte den neuen Log.
Nutze die mysql_static.so aus dem Downloadpaket.
Embedded Colors gehen in Textdraws nicht, außerdem war dein switch falsch.
new Float:FahrzeugLeben,status[32];
GetVehicleHealth(GetPlayerVehicleID(i), FahrzeugLeben);
switch(floatround(FahrzeugLeben))
{
case 601..1000: status="~g~Gut";
case 401..600: status="~y~Mittel";
case 0..400: status="~r~Schlecht";
default: status="~w~Fehler";
}
TextDrawSetString(TachoHeal[i],status);
Wobei hier auch eine if-else-if Verknüpfung gereicht hätte.
new Float:FahrzeugLeben,status[32];
GetVehicleHealth(GetPlayerVehicleID(i), FahrzeugLeben);
if(FahrzeugLeben > 600) status="~g~Gut";
else if(FahrzeugLeben > 400) status="~y~Mittel";
else if(FahrzeugLeben >= 0) status="~r~Schlecht";
else status="~w~Fehler";
TextDrawSetString(TachoHeal[i],status);
@sunrizez
Ohne eine Fehlermeldung kann ich leider nichts dazu sagen, das wäre pure Raterei. Versuche es höchstens mal mit einem leeren Gamemode, ob es damit klappt.
Ohne eine Fehlermeldung lässt sich da leider nichts sagen.
Wenn das ein heruntergeladener Code ist, dann schaue ob du dort die entsprechenden Plugins findest, wenn nicht, kontaktiere den Ersteller des Codes.
ocmd:contract(playerid, params[])
{
new pKopfgeld, pID;
if(sscanf(params, "ud", pID, pKopfgeld))return SendClientMessage(playerid, GRAU, "Benutze: /kopfgeld [ID/Teilname] [$]");
if(GetPlayerMoney(playerid) <= pKopfgeld)return SendClientMessage(playerid,GRAU,"Soviel Geld hast du nicht zur Verfügung.");
new str1[128];
SetPVarInt(pID, "Kopfgeld", GetPVarInt(pID, "Kopfgeld") +pKopfgeld);
GivePlayerMoney(playerid, -pKopfgeld);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerInFrakt(playerid, 2))return SendClientMessage(playerid, GRAU,"Du bist in keiner Fraktion");
{
format(str1, sizeof(str1), "[Kopfgeld] Es wurde $%d auf %s ausgesetzt, Gesamt: $%d!", pKopfgeld, GetName(pID), GetPVarInt(pID, "Kopfgeld"));
SendClientMessage(i,RR,str1);
}
}
}
return 1;
}
Alles anzeigen
GetName(pID, "Kopfgeld")
Zu
GetPVarInt(pID, "Kopfgeld")
Das G bei getName muss groß sein, also GetName.