Was passiert denn?
Was gibst du ein?
Was siehst du?
Hast du mal ein paar prints gesetzt...einfach nur zu sagen "es geht nicht", bringt niemandem etwas
Was passiert denn?
Was gibst du ein?
Was siehst du?
Hast du mal ein paar prints gesetzt...einfach nur zu sagen "es geht nicht", bringt niemandem etwas
CMD:warn(playerid,params[])
{
new pID, grund[64], string[128];
if(sscanf(params,"us[64]", pID, grund)) return SCM(playerid, GELB, "[ Verwendung ] /warn [playerid] [Grund]");
if(!IsPlayerConnected(pID)) return SCM(playerid,GRAU,"Dieser Spieler ist nicht online!");
SCME(playerid, ORANGE,"Du hast den Spieler %s verwarnt Grund: %s", PlayerInfo[pID][pName], grund);
SCME(pID, LROT,"Du wurdest von %s verwarnt Grund: %s", PlayerInfo[playerid][pName], grund);
PlayerInfo[pID][pWarns]++;
new query[256];
mysql_format(handle, query, sizeof(query),"UPDATE users_warns SET name='%s', grund='%s' WHERE id = '%i'", PlayerInfo[playerid][pName], grund, PlayerInfo[playerid][p_id]);
mysql_pquery(handle, query);
if(PlayerInfo[pID][pWarns] == 3)
{
Dialog_Show(playerid, DIALOG_MAXWARNS, DIALOG_STYLE_MSGBOX,"{FF0000}Maximale Anzahl an Warns erreicht", "Du wurdest gebannt da du die Maximale Anzahl an Warns erhalten hast\nSolltest du weitere Fragen haben oder es nicht korrekt sein, bitte melde dich bei einem Head-Adminstrator!", "Okay", "");
}
return 1;
}
Alles anzeigen
Der Error/Warning Text ist schon sehr präzise was das angeht "invalid expression - expression has no effect".
Das ist wie, wenn du im Mathe Unterricht anstatt x = 5 nur = 5 schreibst...da fragt man sich doch, was ist 5?!?!
stock FraktionsRangName(playerid)
{
new fraktion = PlayerInfo[playerid][pFraktion], string[64];
switch(PlayerInfo[playerid][pFRang])
{
case 1: strcat(string, FrakInfo[fraktion][_rang1]);
case 2: strcat(string, FrakInfo[fraktion][_rang2]);
case 3: strcat(string, FrakInfo[fraktion][_rang3]);
case 4: strcat(string, FrakInfo[fraktion][_rang4]);
case 5: strcat(string, FrakInfo[fraktion][_rang5]);
case 6: strcat(string, FrakInfo[fraktion][_rang6]);
default: string = "Kein Rang";
}
return string;
}
Alles anzeigen
Neu bauen hat nicht geholfen?
Evtl einfach NodeJS updaten?
Aus diesem Kommentar (https://stackoverflow.com/ques…mbol-node-module-register) geht hervor, dass es ab 11.11 integriert wurde.
Wichtig ist, dass du so nur einzelne Charakter annimmt, somit müsstest du eine Schleife darum bauen.
Oder einfach das format anpassen:
Ne in besitzer steht doch nur die db Id
cInfo[id][besitzer]=PlayerInfo[playerid][p_id]
Ah, das hatte ich nicht gesehen.
Ich würde einfach das enum für cInfo erweitern.
Füg einfach sowas wie c_Owner[MAX_PLAYER_NAME] hinzu.
Und dann einfach createPlayerCar abändern zu:
createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
for(new i,id,string[128]; i<sizeof(cInfo); i++)
{
id = getFreeCarID();
if(cInfo[id][id_x]!=0)continue;
cInfo[id][besitzer]=PlayerInfo[playerid][p_id];
cInfo[id][c_x]=x;
cInfo[id][c_y]=y;
cInfo[id][c_z]=z;
cInfo[id][c_r]=r;
cInfo[id][model]=modelid;
format(cInfo[id][c_Owner],MAX_PLAYER_NAME,pName);
cInfo[id][id_x] = CreateVehicle(modelid,x,y,z + 5,r,1,1,-1);
format(string,sizeof(string),"Du hast erfolgreich den %s gekauft. Dieser steht ab sofort an der Ausgabestelle bereit. ID: %d",getVehicleName(modelid) , id);
SendClientMessage(playerid,COLOR_GREEN,string); //Wieso vorher SendClientMessageToAll?! wtf :D
saveCarToDB(playerid,id);
return 1;
}
return 1;
}
Alles anzeigen
Deswegen lösche ich doch Zeichen 3 -64
Das ist gar nicht notwendig, kannst auch einfach nur die ersten Zeichen abfragen.
Im format einfach:
format(kennzeichen,16,"%c%c",cInfo[id][c_Owner][0],cInfo[id][c_Owner][1]); //Gibt dir die ersten 2 Zeichen des Namens als Kennzeichen
Ein Spielername muss immer mind. 3 Zeichen lang sein, also ist das problemlos machbar. (Natürlich vorher immer prüfen, dass der String nicht leer ist)
Aber ich weiß nicht ob es überhaupt Funkt oder gut so ist
Nein, das wird nicht funktionieren, da PVars, wie der Name schon sagt, Spieler bezogen sind, also ein SetPVar(carid wird nicht funktionieren bzw. zwangsläufig zu Fehlern führen.
Verstehe die Notwendigkeit von dem PVar auch gar nicht, da der Name vom Besitzer des Fahrzeuges ja schon in cInfo[carid][besitzer] steht. Aber wie Maho schon anmerkte, wäre das eh viel zu Lange, also den Spielernamen sollte man faktisch nicht als Nummernschild verwenden.
Ein cronjob könnte dafür auf dem System selbst auch eingesetzt werden
#Handy
Viel Spaß
Mach das if und das return 1 weg
Du kannst direkt:
cache_get_value_name(i, "fraktion",FrakInfo[id][frak_name],128 );
Nutzen. Davon abgesehen ist das Laden ja offensichtlich nicht dein Problem, da es ja funktioniert.
Wie rufst du denn die Funktion auf?
Vermutlich einfach getFraktion(playerid), allerdings musst du ja in der Funktion erstmal die FraktionsID vom Spieler ermitteln und da ist dein Denkfehler
#Handy
Alternativ quick & dirty die svg in ein HTML laden, dort dann ganz einfach so gestalten wie du magst, auch mit mehreren anzeigen etc und anschließend das html in n pdf bringen
Ja, grundsätzlich möglich, aber mach mMn eher Sinn wenn es als Desktop-App auch genutzt werden sollte.
Xamarin hat viele Nachteile, siehe: https://procoders.tech/blog/flutter-vs-xamarin/
Dann würde ich persönlich auch zu Flutter tendieren.
React wäre natürlich auch möglich, aber nicht so meins.
Welche Plattformen willst du denn unterstützen...
Und was willst du umsetzen?
Ich komme mit perfekt runden Dingen nicht klar.
Wünsche schöne Albträume
Hast mit chown oder chmod mal die Rechte für das Verzeichnis angepasst?
new string[128]; for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i))continue; if(!isAdmin(i, 1))continue; format(string,sizeof(string), "[CAA:] %s: %s",getPlayerName(playerid), string); SendClientMessage(i, ACHAT, string); }
steht denn auch in dem String was drinnen ?
Natürlich nicht.
Der Fehler ist, dass er das direkt unter das ShowPlayerDialog gepackt hat und nicht erst in das if(dialogid == DIALOG_CONTACTSUPPORT).
Zumal muss in das format hinten nicht string, sondern inputtext
Du willst vermutlich SCME nutzen
Und zum Anderen, willst du nun an eine SpielerID oder an eine Spielernummer die SMS schicken?
CMD:sms(playerid, params[])
{
if(PlayerInfo[playerid][pHandy] != 1)return SCM(playerid, LROT, "Du besitzt kein Handy!");
if(PlayerInfo[playerid][pSIM] != 1)return SCM(playerid, LROT, "Du hast keine SIM-Karte!");
new nummer, sms_text[128];
if(sscanf(params,"is[128]", nummer, sms_text))return SCM(playerid,GELB,"[ Verwendung ] /sms [Nummer] [Text]");
new pID = GetPlayerFromHandy(nummer);
if(pID == INVALID_PLAYER_ID) return SCM(playerid,LROT, "Nummer ist nicht bekannt/erreichbar");
SCME(pID,GELB,"[SMS] %s [Absender: %s TelNr: %i]", sms_text, PlayerInfo[playerid][pName], PlayerInfo[playerid][pNummer]);
SCME(playerid,GELB,"[SMS] %s [Empfänger: %s TelNr: %i]",sms_text,PlayerInfo[pID][pName],nummer); //<< dass man selbst auch weiß, dass die Nachricht rausging :D
return 1;
}
stock GetPlayerFromHandy(nummer)
{
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(IsPlayerConnected(i) && pInfo[i][pNummer] == nummer) return i;
}
return INVALID_PLAYER_ID;
}
Alles anzeigen