[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
  • Weiß einer wie im GF die Wanted Sterne unter der Geldanzeige heißen? Hab für Wanted 3 verschiedene Namen :D

  • Hat einer eine Lösung kriege dieses nicht hin.
    updateHaus(id)
    {
    new string[128];
    if(hInfo[id][h_pickup])
    {
    DestroyPickup(hInfo[id][h_pickup]);
    }
    if(hInfo[id][htext])
    {
    Delete3DTextLabel(hInfo[id][htext]);
    }
    if(!strlen(hInfo[id][h_besitzer]))
    {
    hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Zum Verkauf\nKosten: %i$\n/hauskaufen", hInfo[id][h_preis]);
    //hInfo[id][htext]=Create3DTextLabel(string, COLOR_RED, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Besitzer: %s\n/enter", hInfo[id][h_besitzer]);
    //hInfo[id][htext]=Create3DTextLabel(string, COLOR_BLUE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    return 1;
    }
    Die Ausgeklammerten sind die warning tags.
    Es gibt bei mir auch einen Bug er updatet es nicht. Die texte und die Pickups sind noch da wurden nicht Gelöscht.


    Code
    D:\SAMP Server\gamemodes\vroleplay.pwn(1819) : warning 213: tag mismatch
    D:\SAMP Server\gamemodes\vroleplay.pwn(1825) : warning 213: tag mismatch


    Lg,
    Skoam

  • Schreibe die updateHaus-Funktion so:
    updateHaus(id)
    {
    new string[128];
    if(hInfo[id][h_pickup] != -1)
    {
    DestroyPickup(hInfo[id][h_pickup]);
    hInfo[id][h_pickup] = -1;
    }
    if(hInfo[id][htext] != -1)
    {
    Delete3DTextLabel(hInfo[id][htext]);
    hInfo[id][htext] = Text3D:-1;
    }
    if(!strlen(hInfo[id][h_besitzer]))
    {
    hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Zum Verkauf\nKosten: %i$\n/hauskaufen", hInfo[id][h_preis]);
    hInfo[id][htext]=Create3DTextLabel(string, COLOR_RED, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Besitzer: %s\n/enter", hInfo[id][h_besitzer]);
    hInfo[id][htext]=Create3DTextLabel(string, COLOR_BLUE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    return 1;
    }


    Dann füge im enum, dort wo du "htext" deklariert hast "Text3D:" vor das "htext" hinzu, dass es so aussieht:
    Text3D:htext,


    Und füge bei OnGameModeInit, ganz als erstes, das hier ein:
    for(new i=0; i<sizeof(hInfo); i++)
    {
    hInfo[i][h_pickup] = -1;
    hInfo[i][htext] = Text3D:-1;
    }


    Warum tritt das Problem auf? Es gibt auch eine ID 0, das wird bei dem Code den du hattest nicht berücksichtigt.

  • Jeffry: Habe es gemacht und mit Text3D wusste ich auch habe ich auch drinne mit deinem Code habe ich jetzt 3Warnings.

    Code
    D:\SAMP Server\gamemodes\vroleplay.pwn(1817) : warning 213: tag mismatch
    D:\SAMP Server\gamemodes\vroleplay.pwn(1826) : warning 213: tag mismatch
    D:\SAMP Server\gamemodes\vroleplay.pwn(1832) : warning 213: tag mismatch
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    3 Warnings.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if (dialogid==DIALOG_FLEIHENBMX)
    {
    if(response)
    {
    if(radmou[playerid]!=0)return(SendClientMessage(playerid,ROT,"Du hast bereits ein Fahrzeug geliehen! Du kannst es mit '/abgeben' abgeben!");
    if(radbmx[playerid]!=0)return(SendClientMessage(playerid,ROT,"Du hast bereits ein Fahrzeug geliehen! Du kannst es mit '/abgeben' abgeben!");
    SendClientMessage(playerid,GRUEN,"Viel Spaß mit deinem BMX!");
    SetTimerEx("Radbmxtimer",600000,false,"i",playerid);
    GivePlayerMoney(playerid,-48);
    radbmx[playerid]=CreateVehicle(481,479.0388,-1501.8889,20.0479,263.1277,0,0,-1);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen!");
    }
    }


    Hi, weiß jemand was hier falsch ist? bekomme viele Errors wie diese hier:
    C:\Users\Andi\Desktop\EastWestReallife\gamemodes\EastWest.pwn(1327) : error 001: expected token: ")", but found ";"
    C:\Users\Andi\Desktop\EastWestReallife\gamemodes\EastWest.pwn(1328) : error 001: expected token: ";", but found "if"

  • if (dialogid==DIALOG_FLEIHENBMX)
    {
    if(response)
    {
    if(radmou[playerid]!=0)return SendClientMessage(playerid,ROT,"Du hast bereits ein Fahrzeug geliehen! Du kannst es mit '/abgeben' abgeben!");
    if(radbmx[playerid]!=0)return SendClientMessage(playerid,ROT,"Du hast bereits ein Fahrzeug geliehen! Du kannst es mit '/abgeben' abgeben!");
    SendClientMessage(playerid,GRUEN,"Viel Spaß mit deinem BMX!");
    SetTimerEx("Radbmxtimer",600000,false,"i",playerid);
    GivePlayerMoney(playerid,-48);
    radbmx[playerid]=CreateVehicle(481,479.0388,-1501.8889,20.0479,263.1277,0,0,-1);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen!");
    }
    }


    die Klammer ( nach dem return entfernen

  • lol war zu doof das zu sehen xD
    Noch eine Frage, funktioniert das so, dass man 2 if Abfragen so wie hier in den Dialog macht?
    if (dialogid==DIALOG_ABGEBEN)
    {
    if(response)
    {
    if(radmou[playerid]!=0)
    {
    KillTimer(Radmoutimer(playerid));
    SendClientMessage(playerid,GOLD,"Du hast dein Fahrzeug abgegeben, jetzt kannst du wieder ein neues mieten!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast kein Fahrzeug welches du abgeben kannst!");
    }

    if(radbmx[playerid]!=0)
    {
    KillTimer(Radbmxtimer(playerid));
    SendClientMessage(playerid,GOLD,"Du hast dein Fahrzeug abgegeben, jetzt kannst du wieder ein neues mieten!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast kein Fahrzeug welches du abgeben kannst!");
    }
    }
    }



    Und wie könnte ich das machen dass abgefragt wird ob radmou oder radbmx ungleich 0 ist, und dann wenn radbmx ungleich 0 ist dass destroyt wird, wenn nicht das andre

  • @Skoam: Komisch.
    updateHaus(id)
    {
    new string[128];
    if(hInfo[id][h_pickup] != -1)
    {
    DestroyPickup(hInfo[id][h_pickup]);
    hInfo[id][h_pickup] = -1;
    }
    if(hInfo[id][htext] != Text:-1)
    {
    Delete3DTextLabel(hInfo[id][htext]);
    hInfo[id][htext] = Text3D:-1;
    }
    if(!strlen(hInfo[id][h_besitzer]))
    {
    hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Zum Verkauf\nKosten: %i$\n/hauskaufen", hInfo[id][h_preis]);
    hInfo[id][htext]=Create3DTextLabel(string, COLOR_RED, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10.0, 0, 1);
    }
    else
    {
    hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Besitzer: %s\n/enter", hInfo[id][h_besitzer]);
    hInfo[id][htext]=Create3DTextLabel(string, COLOR_BLUE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10.0, 0, 1);
    }
    return 1;
    }
    Einen Fehler habe ich gefunden, den hab ich auch selbst rein gemacht (bei der if-Abfrage den Tag vergessen).
    Möglicherweise liegen die anderen beiden daran, dass du 10 anstatt 10.0 geschrieben hast.

  • Wieso speichert er die Spieler bei einem GMX nicht ?


    public OnGameModeExit()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    SetPlayerSkin(i, SpielerInfo[i][pSkin]);
    SavePlayer(i);
    }
    return 1;
    }


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Und wie könnte ich das machen dass abgefragt wird ob radmou oder radbmx ungleich 0 ist, und dann wenn radbmx ungleich 0 ist dass destroyt wird, wenn nicht das andre


    Das kannst du so machen

    if (dialogid==DIALOG_ABGEBEN)
    {
    if(response)
    {
    if(radmou[playerid]!=0)
    {
    KillTimer(Radmoutimer(playerid));
    SendClientMessage(playerid,GOLD,"Du hast dein Fahrzeug abgegeben, jetzt kannst du wieder ein neues mieten!");
    }
    else
    {
    if(radbmx[playerid]!=0)
    {
    KillTimer(Radbmxtimer(playerid));
    SendClientMessage(playerid,GOLD,"Du hast dein Fahrzeug abgegeben, jetzt kannst du wieder ein neues mieten!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast kein Fahrzeug welches du abgeben kannst!");
    }
    }
    }
    return 1;
    }


    oder die kurz variante

    if (dialogid==DIALOG_ABGEBEN)
    {
    if((radmou[playerid] + radbmx[playerid]) == 0)return SendClientMessage(playerid,ROT,"Du hast kein Fahrzeug welches du abgeben kannst!");
    radbmx[playerid] && KillTimer(Radbmxtimer(playerid)) || KillTimer(Radmoutimer(playerid));
    return SendClientMessage(playerid,GOLD,"Du hast dein Fahrzeug abgegeben, jetzt kannst du wieder ein neues mieten!");
    }

  • 2 kleine Fragen hätte ich noch, was bedeutet das + ?


    Und wie funktioniert dass hier? radbmx[playerid] && KillTimer(Radbmxtimer(playerid)) || KillTimer(Radmoutimer(playerid));
    Würde ja bedeuten radbmx UND Killtimer von Radbmx ODER Killtimer Radmou


    Dann würde man ja das radmou gar nicht abfragen

  • stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_function_query(mysqlconnect, query, false, "", "");
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    Wie wird so ein return des Wertes in einem MySQL Plugin R7 gemacht, da mysql_fetch_int nicht mehr existiert seit der R7.

  • 2 kleine Fragen hätte ich noch, was bedeutet das + ?


    Und wie funktioniert dass hier? radbmx[playerid] && KillTimer(Radbmxtimer(playerid)) || KillTimer(Radmoutimer(playerid));
    Würde ja bedeuten radbmx UND Killtimer von Radbmx ODER Killtimer Radmou


    Dann würde man ja das radmou gar nicht abfragen


    Das + bedeutet das du die zwei werte addierst sollte radmou[playerid] und radbmx[playerid] zusammen 0 ergibt kann man sich sicher sein das keiner der beiden variablen einen wert zugewiesen bekommen hat.



    radbmx[playerid] && KillTimer(Radbmxtimer(playerid)) || KillTimer(Radmoutimer(playerid));
    Man kann Abfragen vereinfachen durch logische Operatoren, es ist zwar ungewöhnlich kann man jedoch machen.
    Würde vom Syntax so aussehen:


    (Bedingung) && Wird ausgeführt, wenn die Bedingung Wahr ist || Wird ausgeführt, wenn die Bedingung nicht war ist.


    Es ist quasi die Kurzform davon:


    if(radbmx[playerid] )
    {
    KillTimer(Radbmxtimer(playerid));
    }
    else
    {
    KillTimer(Radmoutimer(playerid));
    }


    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


    @CHAOS346


    Dies ist nicht mehr möglich.


    Tutorials :


    Normal:
    MySQL R38 - Simples Anmeldung´s System
    ORM:
    http://gta-sa-mp.de/forum/3-sa…ials/1424-das-orm-system/


    Dokumentation:
    http://wiki.sa-mp.com/wiki/MySQL/R33