Also LYD ist mittlerweile eigentlich schon ein NFT. Jeder hat es, trotzdem kauft es halt noch jemand
So schreiben auch nur Geringverdiener oder dennismitzwein 😂
Also LYD ist mittlerweile eigentlich schon ein NFT. Jeder hat es, trotzdem kauft es halt noch jemand
So schreiben auch nur Geringverdiener oder dennismitzwein 😂
Warum sind Maronen Nüsse aber kein Obst oder Gemüse
Maronen sind halt Nussfrüchte, also Nüsse.
Grundsätzlich ist es so, dass bei Obst das Fruchtfleisch gegessen werden kann, aber der Kern nicht.
Bei Nüssen ist es genau anders herum. Da können die Kerne gegessen werden, aber nicht das Fruchtfleisch.
Allerdings ist das nicht die exakte Definition, es gibt auch Dinge wie Scheinfrüchte, das wäre die Erdbeere, die gehört dann auch zu den Nüssen xD
Grundsätzlich gibt es da sehr viele Faktoren die zu der Klassifizierung einspielen.
//Edit: Achso und der Unterschied zwischen Obst und Gemüse ist der, dass Gemüse eher Wurzel/Blätter der Pflande sind und Obst eben die Früchte. Deshalb heißt es auch Nussfrucht, weil die Nüsse als Frucht ausgebildet werden.
Jaaa, mir ist bewusst, dass dies manuell möglich ist. Aber dafür müsste ja jetzt jedes Tutorial der letzten 13 Jahre geupgraded werden...
Wäre irgendwie schöner, wenn Woltlab iwi in der Lage wäre den [PWN] Tag direkt zu interpretieren, damit die Seiten wieder schön angezeigt werden.
Früher im Forum gab es den [PWN] BBCode, der sofort den Code in der Pawn (oder C) Syntax angezeigt hat.
Viele Tutorials etc (z.B. SQLite | Die alternative zu MySQL) sind immer noch so geschrieben, sehen aber heute scheiße aus deshalb.
Meine Frage wäre nun, kann man das wieder einführen, dass der existiert uuund dann eben als C-Code interpretiert wird?
Mit freundlichen Grüßen
Euer Kalle
SQLite | Die alternative zu MySQL
Ist leider durch das Forenupgrade gar nicht mehr schön zu lesen...man könnte mal nachfragen, ob sich das fixxen lässt...
Naja, aaaber da steht alles drinnen.
Ja, kann gut sein, dass das dini gar nicht kann, da das = ein key Zeichen ist für dini ![]()

Ist wohl am Einfachsten, wenn du SQLite nutzt, da gibts die Probleme nicht und musst nicht erst eine MySQL Datenbank aufsetzen.
Musst oben
if( strcmp( key , "Teamspeak" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pTeamspeak] = strval( val ); }
Das musst du so schreiben:
if( strcmp( key , "Teamspeak" , true ) == 0 ) { format(PlayerInfo[playerid][pTeamspeak],128,ini_GetValue( Data )); }
und oben musst du:
schreiben.
Gamemod
Das kannst löschen, das war nur für das Filterscript.
Ja komisch, wie gesagt, dann ist das so...dann musst es anders speichern, sry.
Das ist merkwürdig...mach den Server nochmal aus...schau dass das File 1:1 so aussieht, wie du es hier gepostet hattest und mach ihn nochmal an...
Alsoo bei mir geht es, da liest er das genauso aus...
Falls es nicht geht (was sein kann), das was ich damals geschrieben hatte ist nicht sonderlich Robust, musst du wohl auf deine dini Speichermethode zurückgreifen.
Pack mal unter das Load ein:
printf("%s|%d|%d|%d",TeamSpeakInfo[playerid][playerUID],TeamSpeakInfo[playerid][accepted],TeamSpeakInfo[playerid][acceptcode],TeamSpeakInfo[playerid][playerClientid]);
Wird das richtig ausgegeben?
//Edit:
Ahhh weil du vermutlich das Filterscript erst später lädst? Oder schon auf dem Server warst?
Ok geht, aber wenn ich den Server aus- und wieder anmache, geht es nicht mehr ??? es scheint, dass er die Daten nicht laden kann ???
Wird denn eine Datei in den scriptfiles abgelegt?
Hier bietet sich evtl mein Easy-Save Include an: Easy Saving
//Oben in deinem Filterskript:
//Halt den Pfad wo die Accounts gespeichert werden sollen angeben: (wichtig den Ordner ts_info in dem Beispiel erst in den scriptfiles erstellen!!!)
#define PATH "ts_info/%s.ini"
#include <k_save>
//Dann unter OnPlayerDisconnect
Save(playerid,TeamSpeak,TeamSpeakInfo[playerid]);
//Unter OnPlayerConnect
Load(playerid,TeamSpeak,TeamSpeakInfo[playerid]);
Also zu den Bots teleportieren bringt nichts.
Legendäre Aussage. Was bedeutet denn, dass es nichts bringt?
Wo bist du denn dann? Siehst du ihn? Wenn nicht, kannst du über GetPlayerVirtualWorld ganz einfach abfragen, in welcher Virtuelle Welt der Bot ist...wie schon in meinem 1. Post gesagt, musst du das prüfen.
Etwas mehr Kontext wäre schön.
Wieso teleportierst du dich nicht einfach zu den Bots? Checkst deren Virtuelle Welt und setzt deine Virtuelle Welt?
Selbiges mit den Fahrzeugen?
Ist ja schnell rausgefunden, woran es liegt...
// Meine Split Funktion:
stock split(const string[], tmp[][], delim[], const size=sizeof(tmp[]))
{
for(new i=strfind(string,delim),a,b,old,z=strlen(delim); old!=-1; i=strfind(string,delim,false,i+z),b=0)
{
strmid(tmp[a++][b++],string,(!old)?old:old+1,(i==-1)?strlen(string):i,size),old=i;
}
return 1;
}
//Dann da wo du das auslesen magst
new File:handle = fopen("file.txt", io_read),
line[64], //eine Zeile hat eine max Länge von 64 Zeichen
pos[3][18]; //3 Floats in einer Reihe mit je max 18 Zeichen (eig etwas weniger aber Puffer ist immer gut)
// Check, if the file is opened
if(handle)
{
new Float:x,Float:y,Float:z,i=0;
while(fread(handle, line))
{
split(line, pos, ",");
x = floatstr(pos[0]), y = floatstr(pos[1]), z = floatstr(pos[2]);
printf("Zeile %d: %f,%f,%f",i,x,y,z); //<< jeweils deine Zeile
i++;
}
// Close the file
fclose(handle);
}
else
{
// Error
print("The file \"file.txt\" does not exists, or can't be opened.");
}
Alles anzeigen
Kannst doch ruhig while nutzen, da bedarf es doch kein for ![]()
Vielen Dank
Nur für die Zukunft, einfach den Like Button unter dem jeweiligen Beitrag drücken und gut ist ![]()
if(newTarget === null )
Es wird nicht null, sondern undefined zurückgegeben, wenn der Spieler mit der ID nicht gefunden wurde.
Siehe: https://wiki.rage.mp/index.php?title=Pool::at
Ergo so schreiben.
So zum Beispiel:
ocmd:rod(playerid)
{
if(!IsPlayerInArea(playerid,-1019.7507,2421.9194,-934.8757,2583.4988))return SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Angel gebiet");
if(GetPVarInt(playerid,"ONFISHING") != 0) return SendClientMessage(playerid,COLOR_RED,"Du Angelst bereits");
if(!IsPlayerAtJobCar(playerid, 1)) return SendClientMessage(playerid,COLOR_RED,"Bist an keinem dafür vorgesehenem Fahrzeug!");
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,COLOR_RED,"Du stehst nicht auf Boot");
if(GetPVarFloat(playerid,"FISHCARRY") > 200000.0) return SendClientMessage(playerid,COLOR_RED,"Du trägst zuviel Fisch bei dir Verkaufe erst welchen");
freeze(playerid);
SetPlayerAttachedObject(playerid,0, 18632,6,0.1,0.04,0.025,0.0,180.0,180.0, 1.0, 1.0, 1.0, 0xFF00FF00);
ApplyAnimation(playerid,"SWORD", "sword_IDLE",4.1,1, 0, 0,1,0, 1);
SetPVarInt(playerid,"ONFISHING",1);
SendClientMessage(playerid,COLOR_YELLO,"*Du wirfst deine Angel aus*");
SetTimerEx("FishingTimer",10000,0,"i",playerid);
return 1;
}
stock IsPlayerAtJobCar(playerid, jobID) {
for(new i,Float:x,Float:y, Float:z; i<sizeof(jCars); i++)
{
if(jCars[i][jc_jobid] != jobID) continue;
GetVehiclePos(jCars[i][jc_cid],x,y,z);
if(IsPlayerInRangeOfPoint(playerid,5.0,x,y,z)) return 1;
}
return 0;
}
Alles anzeigen
PS: Die richtige Angel Animation ist ApplyAnimation(playerid,!"SAMP",!"FishingIdle",4.1,0,0,0,1,-1,1); Musst den Spieler dafür auch nicht freezen! Das wird über die Animation gemacht (so kann er sich nicht bewegen, aber die Kamera noch bewegen!).
Ahoi, ich wollte fragen wie man den Befehl so schreibt dass man wenn man z.B. /kick eingibt dass man als Parameter auch den Namen des Spielers angeben kann.
Einfach sscanf(params,"u",pID) verwenden, also das "u" sorgt dafür, dass sowohl Spielername, als auch playerid verwendet werden kann.
sscanf sucht dann direkt, ob es einen Spieler mit diesem Namen gibt und übergibt die playerid von dem Spieler an pID (in diesem Beispiel).