du hast die geschwindigkeit vergessen.
in meiner sig isn link mit einigen fehlermeldungen+erklärung und möglicher lösung.
du hast die geschwindigkeit vergessen.
in meiner sig isn link mit einigen fehlermeldungen+erklärung und möglicher lösung.
lasst es, wenn er keine hilfe will dann nicht.
Alles anzeigenIst leider immer noch tag mismatch...
definiert so:
enum pInfo
{
float:pSx,
float:pSy,
float:pSz,
};
schreib Float:pSx
ein sehr hilfereicher befehl:
if(strcmp(cmd, "/gotocoord", true) == 0)
{
new Float:xCoord;
new Float:yCoord;
new Float:zCoord;
new tmpint;
tmp = strtok(cmdtext, idx);
xCoord = strval(tmp);
tmp = strtok(cmdtext, idx);
yCoord = strval(tmp);
tmp = strtok(cmdtext, idx);
zCoord = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
tmpint = 0;
else
tmpint = strval(tmp);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /gotocoord [xAchse] [yAchse] [zAchse] [InteriorId]");
return 1;
}
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] >= 3)
{
if (GetPlayerState(playerid) == 2)
{
new tmpcar = GetPlayerVehicleID(playerid);
SetVehiclePos(tmpcar, xCoord, yCoord, zCoord);
TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
}
else
{
SetPlayerPos(playerid, xCoord, yCoord, zCoord);
}
SendClientMessage(playerid, COLOR_GRAD1, " Du wurdest teleportiert!");
SetPlayerInterior(playerid,tmpint);
PlayerInfo[playerid][pInt] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht autorisiert !");
}
}
return 1;
}
viel spass damit!
mach aus
if( strcmp( key , "Sx" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSx] = strval( val ); }
einfach
if( strcmp( key , "Sx" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSx] = floatstr( val); }
also strval durch floatstr ersetzen und fertig.
hf
super einfaches tutorial für php http://www.schattenbaum.net/php/anfang.php
wenn du scripten kannst dann sollte das kein problem für dich da stellen, wenn nicht... tja^^
dieses tutorial ist müll... der typ hat 0 ahnung.
bau lieber das ein.
das ist dynamischer, wesentlich schneller und übersichtlicher.
[font='Courier New, Courier, mono']
new FRAKTIONSNAMEcars[9];
Die Zahl 9 heißt es werden 10 Fraktionsautos erstellt. Die 0 zählt man auch mit darum sind es 10.
du hast absolut keine ahnung...
wenn du
new FRAKTIONSNAMEcars[9];
declarierst, dann kannst du von 0-8 zählen und hast eben nur 9 fahrzeuge.
vielleicht gta sa neu installieren, es könnten datein verloren gegangen sein.
ich vermute, dass solche fehler entstehen wenn in gta sa:mp auf nicht vorhandene datein zugreifen will oder in/auf ein ungültigen speicherbereich schreiben/zugreifen will.
kommen andere spieler auf den server?
wenn nicht dann liegts eher am server, z.b. könnten zu viele objekte gespawnt sein oder eins das auf dem client nicht existiert...
ich bezweifle, dass es am server liegt.
versuch mal einige textausgaben mit nummern im quelltext zu verteilen und führe es dann aus.
zwischen der letzten nummer die du gesehen hast und der nächsten müsste der fehler liegen.dann nummerierst du in diesem bereich genauer oder kommentierst aus.
so solltest du den fehler schnell finden.
viel glück^^
ps: meistens sinds schleifen die zu lang laufen... da musst du den zähler (meistens i) in die logfile/textausgabe packen.
welches programm steht dir zur verfügung?
strlen gibt die länge einer zeichenkette zurück.
du hast tmp nicht definiert.
meine /veh funktion sieht so aus:
if(strcmp(cmd, "/veh", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (PlayerInfo[playerid][pAdmin] < 4)
{
SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht autorisiert!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [carid] [color1] [color2]");
return 1;
}
new car;
car = strval(tmp);
if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, " Vehicle Number can't be below 400 or above 611 !"); return 1; }
tmp = strtok(cmdtext, idx);
new color1;
if(!strlen(tmp))
{
color1 = 1;
}else{
color1 = strval(tmp);
if(color1 < 0 || color1 > 126) { SendClientMessage(playerid, COLOR_GREY, " Color Number can't be below 0 or above 126 !"); return 1; }
}
tmp = strtok(cmdtext, idx);
new color2;
if(!strlen(tmp))
{
color2 = 1;
}else{
color2 = strval(tmp);
if(color2 < 0 || color2 > 126) { SendClientMessage(playerid, COLOR_GREY, " Color Number can't be below 0 or above 126 !"); return 1; }
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X,Y,Z);
new carid = CreateVehicle(car, X+5,Y,Z, 0.0, color1, color2, 60000);
CreatedCars[CreatedCar] = carid;
CreatedCar ++;
format(string, sizeof(string), " Auto %d gespawned.", carid);
SendClientMessage(playerid, COLOR_GREY, string);
}
return 1;
}
vorteil: du brauchst nicht unbedingt ne farbe angeben und man kann keine ungültige farbe angeben.
noch nen vorschlag zur verbesserung der sicherheit:
stock MySQLConnect()
{
new arrCoords[19][64];
new strFromFile2[256];
new sqlhost[56], sqluser[56], sqlpass[64], sqldb[56];
new File: file = fopen("config/mysql.cfg", io_read);
if (file)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
strmid(sqlhost, arrCoords[0], 0, strlen(arrCoords[0]), 255);
strmid(sqluser, arrCoords[1], 0, strlen(arrCoords[1]), 255);
strmid(sqlpass, arrCoords[2], 0, strlen(arrCoords[2]), 255);
strmid(sqldb, arrCoords[3], 0, strlen(arrCoords[3]), 255);
fclose(file);
}
samp_mysql_connect(sqlhost, sqluser, sqlpass);//Connected auf die Mysql
samp_mysql_select_db(sqldb);//Wählt die Datenbank
if(samp_mysql_ping() == 0) return 1;//Überprüft die Connection
samp_mysql_connect(sqlhost, sqluser, sqlpass);//Wieder alles von vorn
samp_mysql_select_db(sqldb);
if(samp_mysql_ping() == 0) return 1;
SendRconCommand("exit");
return 0;
}
so kann man die sqldaten extern einstellen, brauch bei änderung des passworts nicht neu kompilieren und kann den code weiter geben ohne das pw ändern zu müssen.
ausserdem kann man bei deiner variante das pw leicht aus der amx auslesen.
ach sorry hab was falsch verstanden.
super tutorial^^
pMember steht in dem godfather mode für die fraktion der man angehört.
steht auf 0 wenn man leader ist oder fraktionslos.
joah sehr umständlich... nur ein array, keine schleife, eine abfragefunktion... das ist nicht nur übersichtlicher sondern auch schneller.
das einzige was umständlicher ist, ist die erstellung eines fahrzeugs...
wenn ich allerdings dran denke, dass du für jede fraktion nen neues array brauchst xD
Paar fehler das muss
gate =
heißen nicht
gate=
Wer probelme hat bei mir melden per PN xD.
sorry für offtopic aber das ist einfach genial xDDDDD
whitespace wird ignoriert... bevor der compiler anfängt macht er aus
gate =
sowieso wieder das:
gate=
deine variante ist einfach nur übersichtlicher
http://wiki.sa-mp.com/wiki/Scripting_Basics
mehr brauch ich nicht sagen oder?