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.
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).
Kaliber Weißt du eventuell weiter?
Na klar, sry, war den ganzen Tag unterwegs. Schaue nur ab und an am Handy vorbei, das darüber zu erklären ist aber nur mäßig spaßig.
Also das kannst du einfach so machen:
new Float:x,Float:y,Float:a,veh=GetPlayerVehicleID(playerid);
GetVehicleZAngle(veh,a);
x = floatsin(-a,degrees)/2.0;
y = floatcos(-a,degrees)/2.0;
SetVehicleVelocity(veh,x,y,0);
Je nachdem wie stark der Boost sein soll, kannst natürlich auch die /2.0 entfernen und *2.0 o.ä. machen ![]()
Jetzt habe die abfrage so allerdings funktioniert es nicht er führt die anmiation nicht aus,
Lösche mal die Zeile aus der Funktion:
if(!GetPlayerVehicleID(playerid))return 0;
Musst lernen, was ein print-Debug ist. printe dir jeweils, was die Funktionen zurückgeben und schau, wo der Code hängen bleibt, dann weißt du was passiert.
new i=strfind(text,word),j=i+strlen(word)-1; text[i++]='[';
while(i<j){text[i]='F'[i++]} //Zeile die gemeint ist
text[j]='];
Was versuchst du denn damit zu erreichen? text wird später doch gar nicht mehr verwendet?!
Aus diesem Grund kannst es eigentlich löschen.
Ich denke ursprünglich sollte das wohl das Wort extrahieren, welches im Text erkannt wurde...
Da kann man dann auch einfach direkt word ausgeben, da dies ja quasi das Wort ist, welches im Text gefunden wurde.
Syntaktisch ist das was da steht halt komplett falsch.
text[i]='F'[i++] //Da fehlt das ;...da macht das 'F' keinen Sinn..das ist einfach Müll, was da steht :D
text[j]=']; // Da fehlt das Ende von '
Aber wie gesagt, lösch es einfach.
Verstehe die Aufregung nicht so ganz.
Aber wie Blöd muss man sein, auch den Namen vom Skript zu nennen für das man keine Rechte hat ![]()
Dabei spielt der ja absolut keine Rolle..man hätte sonst was sagen können...
Und ich wette die Leute, die sich darauf melden, haben dann das Skript und drehen es dem Nächsten Kevin an...
Ahoi, wollte fragen ob es möglich ist Drive Bys zu deaktiviern.
Ahoi, ja das ist möglich.
Mit Hilfe von OnPlayerStateChange kannst du überprüfen, ob die Person Fahrer oder Beifahrer ist und dann kannst du einfach SetPlayerArmedWeapon nutzen und somit die Waffe aus der Hand nehmen, so dass kein Driveby möglich ist.
Öffne mal deine Files in Pawno und schau, ob dort das richtig angezeigt wird ![]()
Vermutlich nicht, dann musst du mit Notepad++ solange spielen, bis es dort richtig angezeigt wird ![]()
Vielleicht nutz mal unter OnGameModeInit: mysql_set_charset("utf8");