Nein.
So:
new string[145];
format(string, sizeof(string), "Name: %s", dini_Get("Info.ini", "LSPD"));
SendCliendMessage(playerid, rot, string);
Nein.
So:
new string[145];
format(string, sizeof(string), "Name: %s", dini_Get("Info.ini", "LSPD"));
SendCliendMessage(playerid, rot, string);
Auslesen musst du es mit dini_Get.
printf("Name: %s", dini_Get("Info.ini", "LSPD"));
dini_Set("Info.ini", "LSPD", name);
Das Arbeiten mit Bits ist bei heutigen Prozessoren meist unnötig und nur eine komplizierte Schreibweise, die zudem meistens langsamer ist. Ich würde das so nicht empfehlen, wenn jemand wirklich auf die Laufzeitperformance achtet.
Sondern:
new bool:Hut[MAX_PLAYERS];
new bool:Shirt[MAX_PLAYERS];
new bool:Tasche[MAX_PLAYERS];
new bool:Fahrrad[MAX_PLAYERS];
#define GivePlayerItem(%0,%1) %1[%0] = true
#define RemovePlayerItem(%0,%1) %1[%0] = false
#define HasItem(%0,%1) %1[%0]
#define ResetAllItems(%0) Hut[%0] = Shirt[%0] = Tasche[%0] = Fahrrad[%0] = false
GivePlayerItem(playerid,Hut);
Mal vom ResetAllItems abgesehen, das ist nicht sooo schön.
Das egalisiert sich aber durch den Performancegewinn am Rest, denn die Bit-Methode ist knappe 25% langsamer beim schreiben, und 15% beim Lesen und die Tatsache, dass man kein 32er Limit an Items hat.
Und nebenbei, einfacher zu verstehen ist es auch ![]()
1.)
format(query,sizeof query,"UPDATE user SET level='%d',geschlecht='%d',money='%d',skin='%d',palter='%d',persoantrag='%d'persot='%d',perso='%d',Ip='%d' WHERE id='%d'",
zu:
format(query,sizeof query,"UPDATE user SET level='%d',geschlecht='%d',money='%d',skin='%d',palter='%d',persoantrag='%d',persot='%d',perso='%d',Ip='%d' WHERE id='%d'",
2.)
if(sscanf(params,"params[40]",veh)) return SendClientMessageEx(playerid,ROT,"Benutze: {D6D6D6}/rent Roller/Bmx/Bike/Mountain Bike/löschen");
zu:
if(sscanf(params,"s[40]",veh)) return SendClientMessageEx(playerid,ROT,"Benutze: {D6D6D6}/rent Roller/Bmx/Bike/Mountain Bike/löschen");
3.)
In dem Code sehe ich kein sscanf.
if(dialogid==DIALOG_FAUTOHAUS)
{
if(response)
{
new id=GetPVarInt(playerid,"buyCarID");
if(GetPlayerMoney(playerid)<fahCars[id][fa_preis])
{
SendClientMessageEx(playerid,ROT,"Du hast nicht genügend Geld");
RemovePlayerFromVehicle(playerid);
return 1;
}
new query[128];
format(query,sizeof(query),"SELECT Count(*) FROM fracvehicles WHERE FracID = '%d'", sInfo[playerid][fraktion]);
mysql_function_query(dbhandle,query,false,"OnCountCheck","d",playerid);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessageEx(playerid,ROT,"Dann eben nicht ...");
}
return 1;
}
forward OnCountCheck(playerid);
public OnCountCheck(playerid)
{
if(cache_get_row_int(0,0,dbhandle) < 15)
{
GivePlayerMoney(playerid,-fahCars[id][fa_preis]);
new Float:x, Float:y, Float:z, Float:a;
fahCars[id][fc_modelID] = fahCars[id][fa_model];
fahCars[id][fa_x] = x;
fahCars[id][fa_y] = y;
fahCars[id][fa_z] = z;
fahCars[id][fa_r] = a;
fcars[id][fc_fracID] = sInfo[playerid][fraktion];
format(query, sizeof(query), "INSERT INTO FracVehicles (ID, ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
id, fcars[id][fc_modelID], fcars[id][fc_x], fcars[id][fc_y], fcars[id][fc_z], fcars[id][fc_a], fcars[id][fc_color1], fcars[id][fc_color2], fcars[id][fc_fracID]);
mysql_tquery(dbhandle, query);
fcars[id][fc_vID] = CreateVehicle(fcars[id][fc_modelID], fcars[id][fc_x], fcars[id][fc_y], fcars[id][fc_z], fcars[id][fc_a], -1, -1, -1);
new str[10],plate;
plate = GetFreeNumberPlate();
fcars[id][e_plate] = plate;
format(str, sizeof(str), "SA-%d", fcars[id][e_plate]);
SetVehicleNumberPlate(fcars[id][fc_vID],str);
PutPlayerInVehicle(playerid, fcars[id][fc_vID], 0);
RemovePlayerFromVehicle(playerid);
return 1;
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,ROT,"Deine Fraktion hat genug Fahrzeuge!");
}
return 1;
}
Versuche es so.
CreateObject(2942,atmInfo[id][atm_x],atmInfo[id][atm_y],atmInfo[id][atm_z]+0.2,0.0,0.0,180.0);
Die +0.2 eben entsprechend anpassen, so dass es passt.
Eine Frage an Jeffry:
Er nutzt die Referenz:
string[i] = fixed[j];
"string" bekommt er aus dem Funktionskopf, daher klappt es.
Arrays werden in PAWN nur als Referenz übergeben.
stock StringTest(str[])
{
str = "xyz";
return 1;
}
new a[10] = "abc";
StringTest(a);
print(a); //Gibt xyz aus
Global: Wenn alle das Textdraw mit dem gleichen Inhalt sehen (Beispiel: Homepage-Link).
Player: Wenn jeder Spieler seinen eigenen Inhalt sieht (Beispiel: Momentane Position).
Die Liste ist nur zum Auslesen, damit du weißt, welcher Buchstabe welche Zahl hat, die ist nicht für den Code bestimmt.
Im PayPay:
if(pInfo[i][pPremium] == 1)
{
SendClientMessage(i,GRAU,"{00FF64}EXP System{FEFEFE}: Du hast soeben 150 EXP +5000$ erhalten (Grund: Premium+)");
EXErhalten[i] = Create3DTextLabel("{00FF64}150 EXP{FEFEFE} erhalten", 0x00F5FFFF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(EXErhalten[i], i, 0.0, 0.0, 0.7);
pInfo[i][pExp]+= 150;
GivePlayerMoney(i,5000);
GameTextForPlayer(i, "~y~Zahltag", 5000, 3);
format(string, sizeof(string), "Neuer Kontostand: $%d", pInfo[i][pBankGeld]);
SendClientMessage(i, GRAU, string);
return 1;
}
zu:
if(pInfo[i][pPremium] == 1)
{
SendClientMessage(i,GRAU,"{00FF64}EXP System{FEFEFE}: Du hast soeben 150 EXP +5000$ erhalten (Grund: Premium+)");
EXErhalten[i] = Create3DTextLabel("{00FF64}150 EXP{FEFEFE} erhalten", 0x00F5FFFF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(EXErhalten[i], i, 0.0, 0.0, 0.7);
pInfo[i][pExp]+= 150;
GivePlayerMoney(i,5000);
GameTextForPlayer(i, "~y~Zahltag", 5000, 3);
format(string, sizeof(string), "Neuer Kontostand: $%d", pInfo[i][pBankGeld]);
SendClientMessage(i, GRAU, string);
pInfo[i][pPlayMinutes] = 0;
continue;
}
Wenn du die Funktion aus dem Link nutzt, sollte es auch so klappen.
Ansonsten, dort ist auch die Liste mit den Nummern dabei:
char GTASA code pointÀ 128Á 129Â 130Ä 131Æ 132Ç 133È 134É 135Ê 136Ë 137Ì 138Í 139Î 140Ï 141Ò 142Ó 143Ô 144Ö 145Ù 146Ú 147Û 148Ü 149ß 150à 151á 152â 153ä 154æ 155ç 156è 157é 158ê 159ë 160ì 161í 162î 163ï 164ò 165ó 166ô 167ö 168ù 169ú 170û 171ü 172Ñ 173ñ 174¿ 175¡ 94° 124
Also so wie DJ Deagle: schon vorgeschlagen hat geht es auf jeden Fall, das habe ich gerade getestet.
PlayerTextDrawSetString(playerid,Job[playerid], "M\172;lltonnen Geleert 0/10");

Mein Test-Code:
new PlayerText:Job[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
PlayerTextDrawDestroy(playerid, Job[playerid]);
Job[playerid] = CreatePlayerTextDraw(playerid,515.000000, 210.500000, "Packete Eingelagert 10");
PlayerTextDrawBackgroundColor(playerid,Job[playerid], 255);
PlayerTextDrawFont(playerid,Job[playerid], 1);
PlayerTextDrawLetterSize(playerid,Job[playerid], 0.259999, 1.100000);
PlayerTextDrawColor(playerid,Job[playerid], -65281);
PlayerTextDrawSetOutline(playerid,Job[playerid], 0);
PlayerTextDrawSetProportional(playerid,Job[playerid], 1);
PlayerTextDrawSetShadow(playerid,Job[playerid], 1);
PlayerTextDrawUseBox(playerid,Job[playerid], 1);
PlayerTextDrawBoxColor(playerid,Job[playerid], 0x00000077);
PlayerTextDrawTextSize(playerid,Job[playerid], 630.000000, 230.000000);
PlayerTextDrawSetSelectable(playerid,Job[playerid], 1);
PlayerTextDrawShow(playerid, Job[playerid]);
PlayerTextDrawSetString(playerid,Job[playerid], "M\172;lltonnen Geleert 0/10");
return 1;
}
Lösche die Daten, die bereits in der Tabelle sind. Erst dann geht es.
Setze die ID in der Tabelle auf AUTO_INCREMENT (A_I) und leere die Tabelle nochmal, falls Daten drin sind.
Wenn du keine ID-Spalte hast, lege sie an.
Hast du es mal mit einer anderen Font ausprobiert?
Was steht im MySQL Log, wenn du dich registrierst?
ocmd:corpse(playerid)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 442)return SendClientMessage(playerid,C_Error,"Du bist nicht im Leichenwagen!");
if(leiche[playerid] == 1) return SendClientMessage(playerid, C_Error, "Du hast bereits eine Leiche geladen. Bringe sie zuerst zum Friedhof.");
for(new i=0; i<MAX_LEICHEN; i++)
{
if(!IsPlayerInRangeOfPoint(playerid,10.0,leichenInfo[i][l_x],leichenInfo[i][l_y],leichenInfo[i][l_z]) || leichenInfo[i][existiert] != 1) continue;
Delete3DTextLabel(leichenInfo[i][NamenLabel]);
DestroyPickup(leichenInfo[i][pickup]);
SendClientMessage(playerid,C_Blau,"Du hast eine Leiche eingesammelt.");
SendClientMessage(playerid,C_Blau,"Fahre nun zum Friedhof, und geb die Leiche dort ab.");
leiche[playerid]=1;
leichenInfo[i][existiert]=0;
SetPlayerCheckpoint(playerid,927.4283,-1073.0220,24.2891,5.0);
return 1;
}
return SendClientMessage(playerid,C_Error,"Hier ist keine Leiche!");
}