Tja, wie macht man das nur...man löscht es einfach beim ausloggen nicht und man assoziiert das Auto mit dem Spielernamen. ![]()
Alternativ, kannst du auch einfach den Zustand des Autos speichern, wenn der Spieler sich ausloggt und wieder setzen ![]()
Tja, wie macht man das nur...man löscht es einfach beim ausloggen nicht und man assoziiert das Auto mit dem Spielernamen. ![]()
Alternativ, kannst du auch einfach den Zustand des Autos speichern, wenn der Spieler sich ausloggt und wieder setzen ![]()
Mach doch mal einen print-Debug.
Schau was in den einzelnen Variablen steht...
Dann wirst du feststellen, dass da nicht das selbe steht...
und dann schaust du wieso... ![]()
Kaliber was soll ich in eine Variable packen ?
Na..teilst das auf, halt in 2 Variablen...für die jeweiligen Routen...
new route1[][Fahrschulcheckpoints] =
{
{1420.4747,-1650.9874,12.9183,4.0},
{1442.0400,-1527.3809,12.9318,4.0},
{1457.3605,-1181.8098,22.1781,4.0},
{1484.7733,-1046.9332,23.2085,4.0},
{1380.0831,-1033.3884,25.8709,4.0},
{1374.9781,-958.5410,33.6481,4.0},
{1191.7825,-935.7949,42.2936,4.0},
{1004.8117,-956.1220,41.1875,4.0},
{588.9537,-1222.1122,17.3355,4.0},
{498.8979,-1331.8008,15.4384,4.0},
{441.8085,-1505.4916,30.4206,4.0},
{613.9475,-1592.6312,15.5575,4.0},
{640.2908,-1419.9365,13.0931,4.0},
{799.9543,-1342.6307,12.9321,4.0},
{945.2153,-1232.6627,16.2017,4.0},
{1146.2305,-1403.1858,13.0817,4.0},
{1299.4003,-1838.3225,12.9320,4.0},
{1417.2319,-1735.1187,12.9399,4.0},
{1420.4747,-1650.9874,12.9183,4.0}
};
new route2[][Fahrschulcheckpoints] = {
{1420.4747,-1650.9874,12.9183,5.0},
{1442.0400,-1527.3809,12.9318,5.0},
{1457.3605,-1181.8098,22.1781,5.0},
{1484.7733,-1046.9332,23.2085,5.0},
{1380.0831,-1033.3884,25.8709,5.0},
{1374.9781,-958.5410,33.6481,5.0},
{1191.7825,-935.7949,42.2936,5.0},
{1004.8117,-956.1220,41.1875,5.0},
{588.9537,-1222.1122,17.3355,5.0},
{498.8979,-1331.8008,15.4384,5.0},
{441.8085,-1505.4916,30.4206,5.0},
{613.9475,-1592.6312,15.5575,5.0},
{640.2908,-1419.9365,13.0931,5.0},
{799.9543,-1342.6307,12.9321,5.0},
{945.2153,-1232.6627,16.2017,5.0},
{1146.2305,-1403.1858,13.0817,5.0},
{1299.4003,-1838.3225,12.9320,5.0},
{1417.2319,-1735.1187,12.9399,5.0},
{1420.4747,-1650.9874,12.9183,5.0}
};
Alles anzeigen
SetPlayerSkin(pID, f_skins[PlayerInfo[pID][pFraction]][PlayerInfo[pID][pFrank]]);
Diese zeile so schreiben:
SetPlayerSkin(pID, f_skins[ PlayerInfo[pID][pFraction] ][ PlayerInfo[pID][pFrank]-1 ]);
Man kann nur Arrays gleicher Länge für eine Dimension nutzen.
Lösung, pack es in 2 Variablen, dann haste auch kein Problem mehr mit sizeof ![]()
Ich hab keine Warnings/Errors
Supi ![]()
Bedenke, dass die Arrays bei 0 Anfangen, also machst du entweder einen Platzhalter für den Rang...oder ziehst -1 beim Rang ab.
sizeof(fscp_streacke1) //Gesamt
sizeof(fscp_streacke1[]) //Erste Dimension
sizeof(fscp_streacke1[][]) //Zweite Dimension
sizeof(fscp_streacke1[][][]) //Dritte Dimension
Das ist so nicht ganz richtig...
sizeof(x) gibt die 1. Dimension zurück
sizeof(x[]) die 2.
sizeof(x[][]) die 3.
Ergo so?
Was? Ich sagte OHNE "
...wtf
So:
meinst du da wo ich Sie definiere?
Ja...bei der Deklaration von f_skins ![]()
Ohne die ", das sind keine Strings, sondern Zahlen ![]()
Existiert denn überhaupt das Feld besitzer und steht da auch was drinnen? ![]()
Nah, die Funktion ist ganz schön veraltet
Und war glaube ich nicht mit allem kombatibel...
Es gibt Alternativen wie: http://forum.sa-mp.com/showthread.php?t=48439
Oder hier habe ich mal auch eine Funktion geschrieben:
stock d_JSON(const json[], const format[], {Float,_}:...)
{
const start=2;
new a=strfind(json,":"), b=strfind(json,","), tmp[64], index=start;
while(a != -1)
{
if(b==-1) b=strlen(json)-1;
switch(format[index-start])
{
case 'd','i': strmid(tmp,json,a+1,b,sizeof(tmp)),setarg(index,0,strval(tmp));
case 'f': strmid(tmp,json,a+2,b-1,sizeof(tmp)),setarg(index,0,_:floatstr(tmp));
case 's': {
strmid(tmp,json,a+1,b,sizeof(tmp));
for(new i,l=strlen(tmp),idx; i<l; i++)
{
if(tmp[i] == '"') continue;
setarg(index,idx++,tmp[i]);
}
}
}
index++;
a=strfind(json,":",false,a+1),b=strfind(json,",",false,b+1);
}
return 1;
}
//Funktioniert so:
new id,Name[MAX_PLAYER_NAME],Wohnort[32];
d_JSON(file_get_content("json.txt"),"dss",id,Name,Wohnort);
//in der json.txt steht zum Beispiel:
//{"id":5,"Name":"Hans","Wohnort":"Los Santos"}
printf("%d|%s|%s",id,Name,Wohnort);
//Output: 5|Hans|Los Santos
Alles anzeigen
Kannst dir was aussuchen ![]()
//edit: ..joa sry ...letzter edit xD
if(cDaten[i ][Owner] == getPlayerName(playerid));
Dafür musst du strcmp nutzen, also so:
if(!strcmp(cDaten[i][Owner] ,GetPlayerName(playerid)))
![]()
Was machst du da auch für einen Mist?!?!
Nimm genau meinen Code...und mach aus den 200ms mal 150ms oder 100ms... ![]()
Aber das was du da machst, ist reiner Quatsch...
Das sieht aber so richtig stockend aus
Du kannst die Timer-Intervalle runterstecken und es selbst präzisieren...
Warum soll ich deine Arbeit machen ![]()
Hey ich wollte mal fragen wie man das macht ? ich habe das mal gemacht aber er hat dann die Mülltonne hoch gemacht und als sie oben war ist sie runtergefallen
Hab es mal so ähnlich gemacht um dir das Prinzip klar zu machen:
//Meine Sleep-Funktion
#define sleep(%0)<%1>; SetTimer("@sleep_"#%1#,%0,0); return 1;}\
@sleep_%1();@sleep_%1() {
//Hier erstellst du das Objekt
tonne = CreateObject(1343,0,0,0,0,0,0); //Die Mülltonne
AttachObjectToVehicle(tonne,veh,0,-4,0,0,0,0); //veh = Müllfahrzeug
//Startet die Bewegung der Tonne
sleep(1000)<a>;
AttachObjectToVehicle(tonne,1,0,-3.8,0.2,-5,0,0);
sleep(200)<b>;
AttachObjectToVehicle(tonne,1,0,-3.6,0.4,-10,0,0);
sleep(200)<c>;
AttachObjectToVehicle(tonne,1,0,-3.4,0.6,-20,0,0);
sleep(200)<d>;
AttachObjectToVehicle(tonne,1,0,-3.2,0.6,-30,0,0);
sleep(1000)<e>; //Ab hier geht die Tonne wieder runter
AttachObjectToVehicle(tonne,1,0,-3.4,0.6,-20,0,0);
sleep(200)<f>;
AttachObjectToVehicle(tonne,1,0,-3.6,0.4,-10,0,0);
sleep(200)<g>;
AttachObjectToVehicle(tonne,1,0,-3.8,0.2,-5,0,0);
sleep(200)<h>;
AttachObjectToVehicle(tonne,1,0,-4,0,0,0,0);
Alles anzeigen
Hoffe...das erklärt so einiges ![]()
Deine sscanf-Abfrage ist falsch.
Diese müsste so aussehen:
//Beim alten sscanf Code
"p.iii"
//Beim sscanf Plugin
"p<.>iii"
Da du ja nicht die Leerzeichen splitten willst, sondern die Punkte ![]()
Schau mal in deine Konversationen...
Hast du evtl eine andere Variable die CoordsOffset heißt?
und steht das enum über dem Offsets und hast du darauf geachtet, das enum in keine Funktion zu schreiben? ![]()
Schau mal genau auf deine Zeile mit dem Error, was steht exakt in dieser Zeile ![]()
Kannst du mal zeigen...wie du das verwendest? ![]()
Bzw in welcher Zeile genau der Fehler auftaucht ![]()
Macht sich jemand mal die Mühe und erläutert warum und woran es dann beim dekompilieren scheitert? Warum gerade dieser Code?
Aufgrund der Präprozessor Operation #pragma.
Genauso wie wenn man #emit verwenden würde, könnte dies nicht dekompiliert werden.
#include und #define bilden die Ausnahmen, da diese vom Präprozessor ersetzt werden und somit der Code (zum dekompilieren) vorhanden bleibt.