@HydranT_: evtl der String zu klein ?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Danke, hat geholfen BlackAce und Jeffrey. Passiert mir immer wieder

-
Warum rutscht die Tabellen Einträge immer eins nach Oben also:
Tabelle 1 Wert: 2500
Tabelle 2 Wert: 4000
Tabelle 3 Wert: 500
Danach ist es so:
Tabelle 1 Wert: 4000
Tabelle 2 Wert: :500
Tabelle 3 Wert: 500
Hier wird alles gespeichert:
stock SaveFraktion()
{
new query[275],
frak = 0;
for(;frak<MAX_FRAKTIONEN;frak++)
{
format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak);
mysql_function_query(MYSQLVerbindung,query,false,"","");
}
return 1;
}Und hier geladen:
mysql_function_query(MYSQLVerbindung,"SELECT * FROM "#DATENBANK"_fraktionen",true,"OnQueryFinish","siii","SELECT * FROM "#DATENBANK"_fraktionen",_SQL_FRAKTION_LOAD,0,MYSQLVerbindung);
case _SQL_FRAKTION_LOAD:
{
cache_get_data(rows,fields);
new frakstring[500],frakname[75];
new frak = 0;
if(rows)
{
while(frak<rows)
{
cache_get_field_content(frak,"id",result);
FrakInfo[frak][fid] = strval(result);
printf("ID: %d",FrakInfo[frak][fid]);cache_get_field_content(frak,"interior",result);
FrakInfo[frak][fInteriorID] = strval(result);cache_get_field_content(frak,"vwelt",result);
FrakInfo[frak][fVirtuelleWelt] = strval(result);cache_get_field_content(frak,"frakgeld",result);
FrakInfo[frak][frakgeld] = strval(result);
printf("geldf: %d",FrakInfo[frak][frakgeld]);cache_get_field_content(frak,"mp5rank",result);
FrakInfo[frak][fMP5Rank] = strval(result);cache_get_field_content(frak,"m4rank",result);
FrakInfo[frak][fM4Rank] = strval(result);cache_get_field_content(frak,"deaglerank",result);
FrakInfo[frak][fDeagleRank] = strval(result);cache_get_field_content(frak,"ak47rank",result);
FrakInfo[frak][fAK47Rank] = strval(result);cache_get_field_content(frak,"riflerank",result);
FrakInfo[frak][fRifleRank] = strval(result);cache_get_field_content(frak,"pistolerank",result);
FrakInfo[frak][fPistoleRank] = strval(result);cache_get_field_content(frak,"shotgunrank",result);
FrakInfo[frak][fShotgunRank] = strval(result);cache_get_field_content(frak,"baseballrank",result);
FrakInfo[frak][fBaseballRank] = strval(result);cache_get_field_content(frak,"schlagringrank",result);
FrakInfo[frak][fSchlagringRank] = strval(result);cache_get_field_content(frak,"schwacheR",result);
FrakInfo[frak][fSRustung] = strval(result);cache_get_field_content(frak,"mittelR",result);
FrakInfo[frak][fMRustung] = strval(result);cache_get_field_content(frak,"starkeR",result);
FrakInfo[frak][fStarkRustung] = strval(result);cache_get_field_content(frak,"frakmaterial",result);
FrakInfo[frak][frakmaterial] = strval(result);cache_get_field_content(frak,"marihuana",result);
FrakInfo[frak][fMarihuana] = strval(result);cache_get_field_content(frak,"koks",result);
FrakInfo[frak][fKoks] = strval(result);cache_get_field_content(frak,"crystle",result);
FrakInfo[frak][fCrystle] = strval(result);cache_get_field_content(frak,"lsd",result);
FrakInfo[frak][fLSD] = strval(result);cache_get_field_content(frak,"gras",result);
FrakInfo[frak][fGras] = strval(result);FrakInfo[frak][fPosX] = cache_get_row_float(frak,29,MYSQLVerbindung);
FrakInfo[frak][fPosY] = cache_get_row_float(frak,30,MYSQLVerbindung);
FrakInfo[frak][fPosZ] = cache_get_row_float(frak,31,MYSQLVerbindung);cache_get_field_content(frak,"frakrank1",result);
format(FrakRank0[frak],26,"%s",result);cache_get_field_content(frak,"frakrank2",result);
format(FrakRank1[frak],26,"%s",result);cache_get_field_content(frak,"frakrank3",result);
format(FrakRank2[frak],26,"%s",result);cache_get_field_content(frak,"frakrank4",result);
format(FrakRank3[frak],26,"%s",result);cache_get_field_content(frak,"frakrank5",result);
format(FrakRank4[frak],26,"%s",result);cache_get_field_content(frak,"frakrank6",result);
format(FrakRank5[frak],26,"%s",result);cache_get_field_content(frak,"fraklohn1",result);
FrakInfo[frak][fraklohn1] = strval(result);cache_get_field_content(frak,"fraklohn2",result);
FrakInfo[frak][fraklohn2] = strval(result);cache_get_field_content(frak,"fraklohn3",result);
FrakInfo[frak][fraklohn3] = strval(result);cache_get_field_content(frak,"fraklohn4",result);
FrakInfo[frak][fraklohn4] = strval(result);cache_get_field_content(frak,"fraklohn5",result);
FrakInfo[frak][fraklohn5] = strval(result);cache_get_field_content(frak,"fraklohn6",result);
FrakInfo[frak][fraklohn6] = strval(result);cache_get_field_content(frak,"wtposX",result);
FrakInfo[frak][WTPos][0] = floatstr(result);cache_get_field_content(frak,"wtposY",result);
FrakInfo[frak][WTPos][1] = floatstr(result);cache_get_field_content(frak,"wtposZ",result);
FrakInfo[frak][WTPos][2] = floatstr(result);Danke im vorraus
-
Versuche ob es so schon hilft.
format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak);
zu:
format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak+1);PS: Dieser Thread ist für kleine Fragen, nicht für solche großen Codes, gedacht.
-
Könnte mir bitte jemand erklären wie genau ich die neue Sirene aus der Version 1.3.7 auf mein Fahrzeug setze?
-
Könnte mir bitte jemand erklären wie genau ich die neue Sirene aus der Version 1.3.7 auf mein Fahrzeug setze?
Die wird nicht drauf gesetzt, es wird nur der Ton eingebaut, wenn du H drückst.
Das kannst du mit http://wiki.sa-mp.com/wiki/AddStaticVehicleEx und http://wiki.sa-mp.com/wiki/CreateVehicle machen. -
Woran kann es liegen das ich in der Tabelle den Wert 30 habe aber Ingame das Script diesen Wert erst dann wieder nimmt wenn ich den ernuet setze?
-
Wie kann man abfragen ob ein string leer ist?
-
Wie kann man abfragen ob ein string leer ist?
if(string[0] == EOS)
{}
oder
if(!strlen(string))
{}
-
Warum wird man nicht in den Editor gesetzt?
case DIALOG_INVENTAR:
{
if(!response)return true;
if(Inventar[playerid][listitem][0] == -1)return SendClientMessage(playerid,GRAU,"Dieser Inventarslot ist leer");
new Float:x,Float:y,Float:z, vworld = GetPlayerVirtualWorld(playerid), vint = GetPlayerInterior(playerid);
GetPlayerPos(playerid,x,y,z);
Inventar[playerid][listitem][2] = CreateDynamicObject(Inventar[playerid][listitem][0],x+3,y,z, 0.0, 0.0,0.0, vworld, vint, -1, 100.0);
EditDynamicObject(playerid, Inventar[playerid][listitem][2]);
} -
Warum wird der textlabel und die Pflanze nicht gelöscht?
if(DrogenInfo[drug][drugart] == 1) {
DrogenInfo[drug][geerntet] = 1;
Spieler[playerid][pMarihuana] += DrogenInfo[drug][drugausbeute];
format(string,sizeof(string),""#HTML_RED"Info: "#HTML_WHITE"Du hast %i Droge (Marihuana) abgeerntet!",DrogenInfo[drug][drugausbeute]);
format(query,sizeof(query),"DELETE FROM "#DATENBANK"_drogen WHERE drogenid = '%d'",DrogenInfo[drug][drogenid]);
Delete3DTextLabel(DrugText[drug]);
DestroyObject(DrogenInfo[drug][drugobjekt]);
SendClientMessage(playerid,GRAU,string);
return true;
} -
Wie kann man abfragen ob ein string leer ist?
hier mit
#define isnull(%1) ((%1[0] == 0) || (%1[0] == 1 && %1[1] == 0))Nutzung:
if(isnull(string))
{
// was tun wenn der string leer ist
} -
enum fraktionInfo {
Float:SpawnX,
Float:SpawnY,
Float:SpawnZ,
fIName[70],
fIColor
}
new frakt[MAX_FRAKS][fraktionInfo] = {
{0.000, 0.000, 0.000, "Hitmen Agency", 0x743A3AFF},
{0.000, 0.000, 0.000, "San Fierro Police Department", 0x0385AFFF},
{0.000, 0.000, 0.000, "Las Venturas Police Department", 0x0385AFFF},
{0.000, 0.000, 0.000, "San Andreas Medical Department", 0xB30000FF},
{0.000, 0.000, 0.000, "San Andreas Vehicle Controll", 0xD26900FF}, // Abschlepp Dienst
{0.000, 0.000, 0.000, "Yakuza", 0xFF82C0FF}
};Compiler sagt:
Spoiler anzeigen error 052: multi-dimensional arrays must be fully initialized
Zeile 15 -
new frakt[MAX_FRAKS][fraktionInfo] = {
zu:
new frakt[][fraktionInfo] = {
oder
MAX_FRAKS zu 6 ändern. -
Warum folgende Errors:
case _SQL_FVERWALTUNG_INSERT:
{
cache_get_data(rows,fields);
if(!rows)
{ //zeile 44645
format(query,sizeof(query),"INSERT INTO fraktionen (id,frakid,frakrank1,frakrank2,frakrank3,frakrank4,frakrank5,frakrank6,mp5rank,m4rank,deaglerank,ak47rank,rifelrank,pistolerank,shotgunrank,baseballrank,schlagringrank,schwacheR,mittelR,starkerR,interior,vwelt,frakgeld,frakmaterial,marihuana,koks,crystle,lsd,gras,posx,posy,posz,fraklohn1,fraklohn2,fraklohn3,fraklohn4,fraklohn5,fraklohn6,wtposX,wtposY,wtposZ,mlimit) VALUES ('%d','%d','NA','NA','NA','NA','NA','NA','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'",id,frakid);//Zeile 44646
mysql_function_query(MySQLVerbidung,query,false,"","");
printf("- Fraktionsvewaltung für die Fraktion %i erstellt -",frakid);
}
return 1;
}
(44645) : error 075: input line too long (after substitutions)
(44646) : error 037: invalid string (possibly non-terminated string)
(44646) : error 017: undefined symbol "INSERT"
(44646) : error 017: undefined symbol "INTO" -
Schreibe es so:
case _SQL_FVERWALTUNG_INSERT:
{
cache_get_data(rows,fields);
if(!rows)
{
query = "INSERT INTO fraktionen (id,frakid,frakrank1,frakrank2,frakrank3,frakrank4,frakrank5,frakrank6,mp5rank,m4rank,deaglerank,ak47rank,rifelrank,pistolerank,shotgunrank,baseballrank,schlagringrank,schwacheR,mittelR,starkerR,interior,vwelt,frakgeld,frakmaterial,marihuana,koks,crystle,lsd,gras,posx,posy,posz,fraklohn1,fraklohn2,fraklohn3,fraklohn4,fraklohn5,fraklohn6,wtposX,wtposY,wtposZ,mlimit) VALUES";
format(query,sizeof(query),"%s('%d','%d','NA','NA','NA','NA','NA','NA','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'",query,id,frakid);
mysql_function_query(MySQLVerbidung,query,false,"","");
printf("- Fraktionsvewaltung für die Fraktion %i erstellt -",frakid);
}
return 1;
} -
Alles anzeigen
Wieso bekomme ich keine Nachricht, das ich in keinem Fahrzeug sitze?
Und wieso bekomme ich beim LichtAn nur die Nachricht, SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in einem Fahrzeug,Boot,Flugzeug, welches kein Licht hat!");stock StartMotor(playerid)
{
if(GetPlayerVehicleSeat(playerid) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um den Motor zu starten!");
new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
if(m == 509 || m == 481 || m == 510) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt auf einem Fahrrad, das hat keinen Motor!");
else if (Motor[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {36D61A}an!");
return 1;
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {E83A3D}aus!");
return 1;
}
}
return 1;
}stock LichtAn(playerid)
{
if(GetPlayerVehicleSeat(playerid) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um das Licht einzuschalten!");
new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
if(m == 417 || 425 || m == 447 || m == 464 || m == 465 || m == 469 || m == 487 || m == 488 || m == 497 || m == 501 || m == 548 || m == 563 || m == 430 || m == 446 || m == 452 || m == 453 || m == 454 || m == 472 || m == 473 || m == 484 || m == 493 || m == 595 ||
m == 460 || m == 476 || m == 511 || m == 512 || m == 513 || m == 519 || m == 520 || m == 553 || m == 577 || m == 592 || m == 593) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in einem Fahrzeug,Boot,Flugzeug, welches kein Licht hat!");
if (Licht[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
Licht[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {36D61A}an!");
return 1;
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
Licht[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {E83A3D}aus!");
return 1;
}
}
return 1;
} -
Spoiler anzeigen stock StartMotor(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um den Motor zu starten!");
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, 0x9B0000FF, "Nur der Fahrer kann den Motor starten!");
new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
if(m == 509 || m == 481 || m == 510) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt auf einem Fahrrad, das hat keinen Motor!");
else if (Motor[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {36D61A}an!");
return 1;
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {E83A3D}aus!");
return 1;
}
return 1;
}Spoiler anzeigen stock LichtAn(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um das Licht einzuschalten!");
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, 0x9B0000FF, "Nur der Fahrer kann das Licht einschalten!");
new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
printf("playerid: %d / Vehicle: %d / Model: %d", playerid, car, m);
if(m == 417 || 425 || m == 447 || m == 464 || m == 465 || m == 469 || m == 487 || m == 488 || m == 497 || m == 501 || m == 548 || m == 563 || m == 430 || m == 446 || m == 452 || m == 453 || m == 454 || m == 472 || m == 473 || m == 484 || m == 493 || m == 595 ||
m == 460 || m == 476 || m == 511 || m == 512 || m == 513 || m == 519 || m == 520 || m == 553 || m == 577 || m == 592 || m == 593) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in einem Fahrzeug,Boot,Flugzeug, welches kein Licht hat!");
if (Licht[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
Licht[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {36D61A}an!");
return 1;
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
Licht[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {E83A3D}aus!");
return 1;
}
return 1;
}Versuche es so. Wenn es nicht geht, poste was beim Licht einschalten im Server Log steht.
-
Jeffry:
Wie kann ich jetzt die Position immer und immer wieder aktualisieren, bis man den Timer killen lässt?Spoiler anzeigen ocmd:find(playerid,params[])
{
new pID, Float:Pos[3];
if(sscanf(params,"u",pID))return SendClientMessage(playerid, C_SSCANF, "Benutze: {FFFFFF}/find [Spieler-ID]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,C_GREY,"** Der angegebende Spieler ist nicht Online.");
if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid, C_GREY," * Du kannst dich nicht selbst finden");
GetPlayerPos(pID, Pos[0], Pos[1], Pos[2]);
SetPlayerCheckpoint(playerid, Pos[0], Pos[1], Pos[2], 2);
SetTimerEx("FindPlayer",1000,true,"u",playerid);
return 1;
}Spoiler anzeigen forward FindPlayer(playerid);
public FindPlayer(playerid)
{
return 1;
} -
SetTimerEx("FindPlayer",1000,true,"u",playerid);
zu:
findTimer[playerid] = SetTimerEx("FindPlayer",1000,true,"dd",playerid, pID);Und:
forward FindPlayer(playerid, pID);
public FindPlayer(playerid, pID)
{
return 1;
}Dann kannst du direkt in diesem public den Checkpoint neu setzen.
Unter den Includes:
new findTimer[MAX_PLAYERS] = {-1,...}; //Setzt alle Werte auf -1So kannst du dann über
KillTimer(findTimer[playerid]);
findTimer[playerid] = -1;
den Timer killen.

