Warum Funktioniert die Abfrage nicht?
stock IsPlayerACop(playerid)
{
if(Spieler[playerid][pFraktion] == 1 && Spieler[playerid][pFraktion] == 2 && Spieler[playerid][pFraktion] == 3)return 1;
return 0;
}
[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
-
-
Benutze den | | ODER Operator, dann funktioniert das auch.
Du kannst nicht in 3 Fraktionen gleichzeitig sein. -
Kurze frage:
Code
Alles anzeigenocmd:taxis(playerid, params[]) { new string[128]; SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Taxifahrer online:"); for(new i=0; i<GetMaxPlayers(); i++) { if(!IsLoggedIn(i))continue; if(!pTaxi[i][taxiUsed]) continue; format(string,sizeof(string),"Fahrer: %s, Preis: %d$", GetName(i), pTaxi[i][taxiFare]); SendClientMessage(playerid, COLOR_WHITE, string); } return 1; }
Wen ich das erste Taxi nehme Funktioniert es.
Nutze ich das Taxi hinter mir Funktioniert es nicht mehr wird er nicht mehr angezeigt.Nutze ich das Fahrzeug Vor mir wieder Funktioniert es wieder ?
Verstehe ich nicht so ganz -
Hallo Meine Altersabfrage ist fehlerhaft.
if (dialogid==DIALOG_ALTER)
{
new string[128];
if(response)
{
new query[128];
if(strlen(inputtext) > 2 || strlen(inputtext) < 2)
{
SendClientMessage(playerid,Kaminrot,"SERVER: Das glaube ich nicht.");
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Dein Alter","Wie alt bist du?","Weiter","Kick");
}
else
{
format(string,sizeof(string),"Du bist also %s Jahre alt.",inputtext);
SendClientMessage(playerid,Gelb,string);
format(query,sizeof(query),"UPDATE user SET alter='%i' WHERE id='%i'",inputtext,sInfo[playerid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
}
}
else
{
format(string,sizeof(string),"[KICKED] %s hat die Registration abgebrochen.",getPlayerName(playerid));
SendClientMessageToAll(Blutrot,string);
Kick(playerid);
}
}Errorcode aus der mysql_log.txt:
Code[18:17:03] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'alter='49' WHERE id='16'' at line 1
Könnte mir bitte jemand weiterhelfen? -
UPDATE user SET alter='%i' WHERE id='%i'
Musst du so schreiben:
Das liegt daran, dass ALTER ein SQL Keyword ist
Kurze frage:
Wo setzt du das denn...was genau willst du denn machen..bisschen mehr Kontext bitte
-
Wen er sein Preis ausgewählt hat wird das alles gesetzt.
Code
Alles anzeigencase DIALOG_TAXIFARE: { if(response) { if(IsNumeric(inputtext)) { if(strval(inputtext) >= 0 && strval(inputtext) <= 200) { new string[128]; new vehicleid = GetPlayerVehicleID(playerid); for(new i = 0; i < sizeof(pTaxi); i++) { if(pTaxi[i][taxiVehicleID] != vehicleid) continue; pTaxi[i][taxiFare] = strval(inputtext); SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du bist nun im Dienst als Taxifahrer"); pTaxi[i][taxiUsed] = true; pTaxi[i][taxiPlayer] = playerid; SetPlayerColor(playerid, COLOR_YELLOW); format(string,sizeof(string),"{D7DF01}Taxi Company\n\nFahrer: %s\nKosten: %d$", GetName(playerid), pTaxi[i][taxiFare]); Update3DTextLabelText(TaxiText[i], COLOR_WHITE, string); pTaxi[i][taxiTimer] = SetTimerEx("Taxameter", 1000 * 30, true, "i", pTaxi[i][taxiVehicleID]); } } else { RemovePlayerFromVehicle(playerid); } } } }
-
Ahh okay, dann ist dein Befehl falsch, schreib den so:
C
Alles anzeigenocmd:taxis(playerid, params[]) { new string[MAX_PLAYER_NAME+4+21]; SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Taxifahrer online:"); for(new i; i < sizeof(pTaxi); i++) { if(!pTaxi[i][taxiUsed]) continue; format(string,sizeof(string),"Fahrer: %s, Preis: %d$", GetName(pTaxi[i][taxiPlayer]), pTaxi[i][taxiFare]); SendClientMessage(playerid, COLOR_WHITE, string); } return 1; }
Da kamste durcheinander mit den Schleifen und Indizes
-
Hallo!
Was muss ich machen, um dem Spieler einen beliebigen Geldbetrag geben zu können?
ocmd@2:geldgeben,givemoney(playerid,params[])
{
{
new geld,pID,string[128],string2[128];
if(sscanf(params,"ui", pID, geld))return SendClientMessage(playerid,GRAU,"/givemoney [Name/ID] [Betrag]");
{
GivePlayerMoney(pID, -1);
// format(string,sizeof(string),"AdmCMD: %s hat %s %i Euro gegeben!",SpielerDaten[pID][pName],SpielerDaten[playerid][pName],geld);
format(string, sizeof(string),"AdmCMD: %s hat %s %d$ gegeben!", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], geld);
SendClientMessage(playerid, ROT,string);
format(string2, sizeof(string2),"Du hast von %s %d$ bekommen!",SpielerDaten[playerid][pName], geld);
SendClientMessage(pID,ROT,string2);
}
}
return 1;
}MfG
-
um dem Spieler einen beliebigen Geldbetrag geben zu können?
Wenn du:
GivePlayerMoney(pID, geld);
schreibst, dann macht der Code das doch.
Wenn es dem eigenen Spieler abgezogen werden soll:
GivePlayerMoney(playerid, -geld);
PS: Solltest dann natürlich prüfen, ob der Spieler genug Geld auf der Hand hat
-
-
-
Wie speicher ich das jetzt in der MYSQL DB?
Da müsste es noch eine Spieler Variable geben, wie SpielerInfo[playerid][pGeld] oder sowas.
Das musst du natürlich in den Befehl auch noch einbauen, z.B. so:
SpielerInfo[pID][pGeld] += geld;
SpielerInfo[playerid][pGeld] -= geld;//Und dann eben die Variablen speichern
-
Wie speicher ich das jetzt in der MYSQL DB?
hast du schon eine savePlayer Funktion oder wie auch immer sie bei dir heißt ?
-
Dies Funktion habe ich.
stock SaveUserStats(playerid){ if(!SpielerDaten[playerid][pEingeloggt]) return 1; Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Skin = '%d' WHERE id = '%d'", SpielerDaten[playerid][pLevel],SpielerDaten[playerid][pGeld],SpielerDaten[playerid][pSkin],SpielerDaten[playerid][p_id]); /*mysql_format(handle, query, sizeof(query), "UPDATE users SET Admin = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);*/ Das Query wird abgesendet mysql_pquery(handle, query); return 1;}
Was muss ich machen, damit das Geld beim geben n der DB gespiechert wird?
Momentan wirds nur nach relog gespeichert.Edit: Habs gelöst
-
Code
Alles anzeigenocmd:fishes(playerid) { new string[128]; SendClientMessage(playerid, COLOR_WHITE, "|____________________Fische____________________|"); format(string, sizeof(string), "** (1) Fisch: %s (%d LBS)", Fische[Spieler[playerid][pFishID][1]], Spieler[playerid][pFishweight][1]); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "** (2) Fisch: %s (%d LBS)", Fische[Spieler[playerid][pFishID][2]], Spieler[playerid][pFishweight][2]); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "** (3) Fisch: %s (%d LBS)", Fische[Spieler[playerid][pFishID][3]], Spieler[playerid][pFishweight][3]); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "** (4) Fisch: %s (%d LBS)", Fische[Spieler[playerid][pFishID][4]], Spieler[playerid][pFishweight][4]); SendClientMessage(playerid, COLOR_WHITE, string); format(string, sizeof(string), "** (5) Fisch: %s (%d LBS)", Fische[Spieler[playerid][pFishID][5]], Spieler[playerid][pFishweight][5]); SendClientMessage(playerid, COLOR_WHITE, string); SendClientMessage(playerid, COLOR_WHITE, "|______________________________________________|"); return 1; }
Hey, Kurze frage der befehl funktioniert nur wen ich Fische gefangen habe?
Warum. -> Kann man bei Fisch wen keine Vorhanden sind das da steht "Nicht Vorhanden"? -
Warum. -> Kann man bei Fisch wen keine Vorhanden sind das da steht "Nicht Vorhanden"?
Code
Alles anzeigenocmd:fishes(playerid) { SendClientMessage(playerid, COLOR_WHITE, "|____________________Fische____________________|"); for(new i=1,string[128]; i<6; i++) { if(!Spieler[playerid][pFishweight][i]) format(string, sizeof(string), "** (%d) Fisch: Nicht vorhanden",i); else format(string, sizeof(string), "** (%d) Fisch: %s (%d LBS)", i, Fische[Spieler[playerid][pFishID][i]], Spieler[playerid][pFishweight][i]); SendClientMessage(playerid, COLOR_WHITE, string); } SendClientMessage(playerid, COLOR_WHITE, "|______________________________________________|"); return 1; }
Meinst du so?
-
-
Hm ja, aber der fehler bleibt ja gleich.
Hat er nur 4 werden 4 angezeigt und dann kommt das der Befehl nicht exestiert.
Und wen er garkeine hat steht oben Fische und als zweiter das der Befehl nicht exestiert :/? -
Und wen er garkeine hat steht oben Fische und als zweiter das der Befehl nicht exestiert :/?
Dann erwähne diesen Fehler doch
Das liegt wohl daran, dass da ein falscher index ist.
Lade mal crashdetect + zeig mal wie du das Array deklariert hast
-
Ja habe ich gerade gemacht. der wollte nicht laden
17:49:11] [debug] Run time error 4: "Array index out of bounds"
[17:49:11] [debug] Attempted to read/write array element at negative index -1
[17:49:11] [debug] AMX backtrace:
[17:49:11] [debug] #0 0002c91c in public ocmd_fishes (playerid=0, 50056372) at C:\Users\Desktop\Reallife\Reallife Script\gamemodes\German.pwn:3640
[17:49:11] [debug] #1 native CallLocalFunction () in samp7002_6691
[17:49:11] [debug] #2 000008ec in public OnPlayerCommandText (playerid=0, cmdtext[]=@02fbcc94 "/fishes") at C:\Users\Desktop\Reallife\Reallife Script\gamemodes\German\pawno\include\ocmd.inc:78Code
Alles anzeigenocmd:fishes(playerid) { SendClientMessage(playerid, COLOR_WHITE, "|____________________Fische____________________|"); for(new i=1, string[128]; i<6; i++) { if(!Spieler[playerid][pFishweight][i]) format(string, sizeof(string), "** (%d) Fisch: Nicht vorhanden",i); else format(string, sizeof(string), "** (%d) Fisch: %s (%d LBS)", i, Fische[Spieler[playerid][pFishID][i]], Spieler[playerid][pFishweight][i]); SendClientMessage(playerid, COLOR_WHITE, string); //3640 } SendClientMessage(playerid, COLOR_WHITE, "|______________________________________________|"); return 1; }
-
Oki, schreibe es so:
C
Alles anzeigenocmd:fishes(playerid) { SendClientMessage(playerid, COLOR_WHITE, "|____________________Fische____________________|"); for(new i=1, string[128]; i<6; i++) { if(Spieler[playerid][pFishID][i] == -1) format(string, sizeof(string), "** (%d) Fisch: Nicht vorhanden",i); else format(string, sizeof(string), "** (%d) Fisch: %s (%d LBS)", i, Fische[Spieler[playerid][pFishID][i]], Spieler[playerid][pFishweight][i]); SendClientMessage(playerid, COLOR_WHITE, string); //3640 } SendClientMessage(playerid, COLOR_WHITE, "|______________________________________________|"); return 1; }
-