[SAMMELTHREAD] Kleine Scripting Fragen

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;
    }


  • 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;
    }

  • 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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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


  • 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.

  • 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 CompuPhase



    3 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 -.-

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • 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 line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    6 Errors.

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen