Hier fragst du ab, ob der Spieler mehr als 1 nem Wanted hat, d.H. die Abfrage bezieht alle spieler ein, die mehr als 1 Wanted haben. Dementsprechend ab 2 Wantedlevel.
if(GetPlayerWantedLevel(playerid) > 1)
[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
-
-
Wie kann ich es machen das wenn der spieler /spawnchange eingiebt das er den im Hotel spawnt?
if(strcmp(cmd, "/spawnchange", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pPhousekey] != 255)
{
if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)
{
SendClientMessage(playerid, COLOR_GREY, " Du bist am zuschauen, Spawn kann jetzt nicht gewechselt werden !");
return 1;
}
if(SpawnChange[playerid])
{
SendClientMessage(playerid, COLOR_GREY, " Ab jetzt spawnst du wieder am gewohnten Platz !");
SpawnChange[playerid] = 0;
if(IsAnInstructor(playerid))
{
if(SchoolSpawn[playerid] == 0)
{
SchoolSpawn[playerid] = 0;
SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt in deinem eigenen / gemieteten Haus ! !");
SpawnChange[playerid] = 1;
}
}
else
{
if(IsAnInstructor(playerid))
{
if(SchoolSpawn[playerid] == 0)
{
SchoolSpawn[playerid] = 0;
SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du besitzt kein Haus / keine Mietwohnug !");
return 1;
}
}
}
return 1;
} -
Hier fragst du ab, ob der Spieler mehr als 1 nem Wanted hat, d.H. die Abfrage bezieht alle spieler ein, die mehr als 1 Wanted haben. Dementsprechend ab 2 Wantedlevel.
if(GetPlayerWantedLevel(playerid) > 1)zu dem muss er die labels attachen sonst bringt es ja nichts
-
Gibt es noch i.welche Bugs in 0.3x?
-
Wie kann ich es machen das wenn der spieler /spawnchange eingiebt das er den im Hotel spawnt?
if(strcmp(cmd, "/spawnchange", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pPhousekey] != 255)
{
if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)
{
SendClientMessage(playerid, COLOR_GREY, " Du bist am zuschauen, Spawn kann jetzt nicht gewechselt werden !");
return 1;
}
if(SpawnChange[playerid])
{
SendClientMessage(playerid, COLOR_GREY, " Ab jetzt spawnst du wieder am gewohnten Platz !");
SpawnChange[playerid] = 0;
if(IsAnInstructor(playerid))
{
if(SchoolSpawn[playerid] == 0)
{
SchoolSpawn[playerid] = 0;
SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt in deinem eigenen / gemieteten Haus ! !");
SpawnChange[playerid] = 1;
}
}
else
{
if(IsAnInstructor(playerid))
{
if(SchoolSpawn[playerid] == 0)
{
SchoolSpawn[playerid] = 0;
SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du besitzt kein Haus / keine Mietwohnug !");
return 1;
}
}
}
return 1;
}Ich geh mal davon aus das man mit sowas mehr anfangen kann ist aufjedenfall übersichtlicher
if(!strcmp(cmdtext, "/spawnchange", true))
{
switch(SchoolSpawn[playerid]){
case 0:{
if(PlayerInfo[playerid][pPhousekey] != 255)return SpawnChange[playerid] = 1,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt in deinem eigenen / gemieteten Haus ! !");
else if(IsAnInstructor(playerid)){
if(SchoolSpawn[playerid] == 0)return SchoolSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}else return SendClientMessage(playerid, COLOR_GREY, " Du besitzt kein Haus / keine Mietwohnug !");
}
case 1:{
if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, COLOR_GREY, " Du bist am zuschauen, Spawn kann jetzt nicht gewechselt werden !");
else if(IsAnInstructor(playerid)){
if(SchoolSpawn[playerid] == 0)return SchoolSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}else return SpawnChange[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Ab jetzt spawnst du wieder am gewohnten Platz !");
}
}
return 1;
}Jetzt schaust du dir den Verlauf von SpawnChange[playerid] an abgesehen von den Fahrlehreren und dann sollte das gar nicht so schwer sein das so erweitern
-
Spoiler anzeigen Ich geh mal davon aus das man mit sowas mehr anfangen kann ist aufjedenfall übersichtlicher
if(!strcmp(cmdtext, "/spawnchange", true))
{
switch(SchoolSpawn[playerid]){
case 0:{
if(PlayerInfo[playerid][pPhousekey] != 255)return SpawnChange[playerid] = 1,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt in deinem eigenen / gemieteten Haus ! !");
else if(IsAnInstructor(playerid)){
if(SchoolSpawn[playerid] == 0)return SchoolSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}else return SendClientMessage(playerid, COLOR_GREY, " Du besitzt kein Haus / keine Mietwohnug !");
}
case 1:{
if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, COLOR_GREY, " Du bist am zuschauen, Spawn kann jetzt nicht gewechselt werden !");
else if(IsAnInstructor(playerid)){
if(SchoolSpawn[playerid] == 0)return SchoolSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}else return SpawnChange[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Ab jetzt spawnst du wieder am gewohnten Platz !");
}
}
return 1;
}Jetzt schaust du dir den Verlauf von SpawnChange[playerid] an abgesehen von den Fahrlehreren und dann sollte das gar nicht so schwer sein das so erweitern
Was ist daran jetzt falsch?if(!strcmp(cmdtext, "/spawnchange", true))
{
switch(SchoolSpawn[playerid]){
case 0:{
if(PlayerInfo[playerid][pPhousekey] != 255)return SpawnChange[playerid] = 1,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt in deinem eigenen / gemieteten Haus ! !");
else if(IsAnInstructor(playerid)){
if(SchoolSpawn[playerid] == 0)return SchoolSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}else return SendClientMessage(playerid, COLOR_GREY, " Du besitzt kein Haus / keine Mietwohnug !");
}
case 1:{
if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, COLOR_GREY, " Du bist am zuschauen, Spawn kann jetzt nicht gewechselt werden !");
else if(IsAnInstructor(playerid)){
if(SchoolSpawn[playerid] == 0)return SchoolSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt an der Fahrschule !");
}else return SpawnChange[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Ab jetzt spawnst du wieder am gewohnten Platz !");
}
case 2:{
if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, COLOR_GREY, " Du bist am zuschauen, Spawn kann jetzt nicht gewechselt werden !");
else if(IsAnInstructor(playerid)){
if(HotelSpawn[playerid] == 0)return HotelSpawn[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Du spawnst jetzt am Hotel !");
}else return SpawnChange[playerid] = 0,SendClientMessage(playerid, COLOR_GREY, " Ab jetzt spawnst du im Hotel !");
}
return 1;
} -
Hier fragst du ab, ob der Spieler mehr als 1 nem Wanted hat, d.H. die Abfrage bezieht alle spieler ein, die mehr als 1 Wanted haben. Dementsprechend ab 2 Wantedlevel.
if(GetPlayerWantedLevel(playerid) > 1)Cops sollen auch spieler nicht sehen die noch das 1. WantedLevel haben erst ab level 2
-
Daran ist nix Falsch ich hab es dir nur etwas übersichtlicher gestaltet kannst jedoch das auch mit else if(SchoolSpawn[playerid] == 0) erweitern
-
Hallo Bread,
sobald ich eine dieser TextDraws lösche kommt diesere leere Kasten. (siehe gelb)
Woran könnte es liegen das aufeinmal dieser Mist erscheint? -
Hallo Bread,
sobald ich eine dieser TextDraws lösche kommt diesere leere Kasten. (siehe gelb)
Woran könnte es liegen das aufeinmal dieser Mist erscheint?Es kommt drauf an wie erstellst du dieses textdraw, wie "entfernst" du es Zerstören | Ausblenden.
Vllt ein Timer der den Kasten wieder erstellt und anzeigt oder anzeigt -
Der Kasten der erscheint hat mit nichts ein zusammenhang das ist das Problem.
-
Der Kasten der erscheint hat mit nichts ein zusammenhang das ist das Problem.
Wie lässt du den Kasten erstellen ist das ein PlayerTextdraw
-
Ich habe meinen Code jetzt mal optimiert allerdings sehe ich immernoch nicht die Label?
forward Timer(playerid);
public Timer(playerid)
{
new PlayerText3D:playertextid;
for(new i; i<100; i++)
{
if(GetPlayerWantedLevel(i) == 0) continue;
DeletePlayer3DTextLabel(playerid, playertextid);
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z);
new str[128];
format(str, 128,"Dieser Spieler hat %d Wanteds !",GetPlayerWantedLevel(i));
playertextid = CreatePlayer3DTextLabel(i,str,0x008080FF,X,Y,Z+2,40.0);
}
return 1;
}Der Timer wird so ausgeführt bei OnPlayerConnect
SetTimerEx("Timer",1000,1,"i",playerid);
Was ist da fail
-
Guten Morgen liebe Community ich suche das genaue gegenteil dieses Code schnippsels den ich will nicht etwa Daten in die mysql Datenbank einlesen sondern laden da müsste es ja auch eine Möglichkeit geben wie man nicht mit jedem GetInt eine neue anfrage startet sondern alles in einer Abfrage macht.
format(query,sizeof(query),"UPDATE `accounts`
Außerdem noch 2 weitere Fragen:
1. Selber erstellte Objecte laden ja bekanntlich langsamer als die Originalen auf der Map ändert die Nutzung eines Object Streamers dadran etwas?
2. Timer sind ziemlich Ressourcen fressend habe ich so heraus gehört was ist den nun die bessere Option wenn ich die Wahl zwischen OnPlayerUpdate und SetTimer habe? Und gibt es außer Timern noch irgendetwas was man besonders vermeiden sollte um Ressourcen zu sparen?Mfg Zyan
-
Guten Morgen liebe Community ich suche das genaue gegenteil dieses Code schnippsels den ich will nicht etwa Daten in die mysql Datenbank einlesen sondern laden da müsste es ja auch eine Möglichkeit geben wie man nicht mit jedem GetInt eine neue anfrage startet sondern alles in einer Abfrage macht.
format(query,sizeof(query),"UPDATE `accounts`
Außerdem noch 2 weitere Fragen:
1. Selber erstellte Objecte laden ja bekanntlich langsamer als die Originalen auf der Map ändert die Nutzung eines Object Streamers dadran etwas?
2. Timer sind ziemlich Ressourcen fressend habe ich so heraus gehört was ist den nun die bessere Option wenn ich die Wahl zwischen OnPlayerUpdate und SetTimer habe? Und gibt es außer Timern noch irgendetwas was man besonders vermeiden sollte um Ressourcen zu sparen?Mfg Zyan
Um daten mit MySQL auszulesen benutzt man den Befehl SELECT und um die ganze reihe auszulesen
format(query,sizeof(query),"SELECT * FROM `accounts` Der Stern steht für alles in der Reihe also alle Spalten.
1. Objectstreamer sind nur dafür da mehr Objecte für den Spieler zu erstellen als 1000 da diese wie der nahme schon sagt eingestreamt wird das limit liegt bei 1000
da die Streamer mit CreatePlayerObject arbeiten macht ja auch sinn. Es lohnt sich also einen streamer zu benutzen am besten das streamer plugin von incognito
2. Das war du da gehört hast ist Falsch Timer sind an sich nicht ressourcenfressend nur der Inhalt den er umfasst und das mehrere Funktionen "auf einmal" aufgerufen werden also eher nicht direkt da PAWN nicht wie C++ oder andere Programmiersprachen multithreaded ist also es kann keine dinge gleichzeitig machen sondern alles
step bei step. OnPlayerUpdate ist ein Timer für den Spieler dieser ist für die Synchronisation des Spieler verantwortlich es ist ein Timer der sich Mehr als 10 mal in der Sekunde aktuallisiert wird. Bei Fahrzeuge ist es OnUnoccupiedVehicleUpdate. Man sollte es dort nur seinen code rein packen wenn man auch ahnung hat was man tut.
Wissenswertes ist auch noch das sollte der SPieler auf dem Desktop sein wird OnPlayerUpdate nicht mehr aufgerufen und zu den Timern diese sind nicht präzise sondern haben eine delay die je nach dem größer oder kleiner ist je nach Zeit du kannst bei einem Timer der alle 10 Stunden aufgerufen wird eine delay von 10 - 40 Minuten haben dazu gibt es auch fixxes. Am besten finde ich ist es y_timers zu benutzen da das die Timer auch etwas verzögert startet und ich mein da ist auch der Timerfix enthalten. -
Weiß jemand wie die Animation heißt, die kommt, wenn man sich das Nachsichtgerät anzieht?
-
Kann mir einer Erklären was diese Errors meinen?
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1197) : error 006: must be assigned to an array
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1199) : error 006: must be assigned to an array
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1200) : error 006: must be assigned to an array
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase3 Errors.
SpielerInfo[playerid][pGeschlecht] = r_mysql_GetString("Geschlecht"); ------ Zeile
SpielerInfo[playerid][pGeburtsdatum] = r_mysql_GetInt("Geburtsdatum");
SpielerInfo[playerid][pStadt] = r_mysql_GetString("Stadt"); -------- Zeile
SpielerInfo[playerid][pOrtsteil] = r_mysql_GetString("Ortsteil"); -------------Zeile
SpielerInfo[playerid][pHealth] = r_mysql_GetFloat("Health");//Edit Code -.-
-
Eddy teste mal das
format(SpielerInfo[playerid][pGeschlecht],sizeof(SpielerInfo[playerid][pGeschlecht]),"%s",r_mysql_GetString("Geschlecht")); -
Dann bekomme ich diese Errors ....
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1198) : error 006: must be assigned to an array
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1199) : error 006: must be assigned to an array
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1200) : error 001: expected token: "]", but found "-identifier-"
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1200) : warning 215: expression has no effect
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1200) : error 001: expected token: ";", but found "]"
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1200) : error 029: invalid expression, assumed zero
C:\Users\Eddy\Desktop\Selfmade\gamemodes\NcS.pwn(1200) : fatal error 107: too many error messages on one lineCompilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Errors.
-
ist pGeschlecht das auch im Enum als string angegeben?
ich denke mal nicht