[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
  • cmds = TextDrawCreate(240.0,580.0,"/teles, /regeln, /health, /armor, /repair, /god, /autogod, \n/kill, /help, /report");
    TextDrawUseBox(cmds,1);


    Font, Farbe, Hintergrundfarbe etc vergessen^^


    Ach muss das alles vorhanden sein? Ich dachte da gibt es Standartwerte oder so. Whoops. Danke jedenfalls. :D
    Edit: Nein funktioniert nicht.


  • Was genau soll ich darunter verstehen?


    "Streamed in" heißt doch im Prinzip nur, dass das Fahrzeug für mich sichtbar ist, oder? Und das ist es nämlich definitiv.




    Mir ist das eben auch aufgefallen, geht aber trotzdem nicht. Hätte mich auch gewundert, da die Vehicle ID unter 5 ist und so in meinen MAX_PLAYERS Bereich fällt.


    Es gibt aber nen kleines Update dazu: Ich kann dynamisch gespawnte Fahrzeuge Ingame (per CreateVehicle) abschleppen, statische Fahrzeuge allerdings nicht. Egal ob ich die von der DB per AddStaticVehicle oder CreateVehicle lade. 8|

  • Im Dini, dann vll. so:


    dini_Int
    dini_Get
    dini_Float
    //usw.
    // zum abspeichern von allem was drinne ist.


    Dann so:
    Dini_Remove
    // Damit die Datei nicht mehr da ist


    Und dann:
    Dini_Create
    // Damit die Datei neu gesetzt wird


    Zu guter Letzt:
    dini_Set
    dini_IntSet
    dini_FloatSet
    // Und so weiter, damit die Sachen neu gesetzt werden


    // EDIT @*Ghostrider*:

    Einmal editiert, zuletzt von MomoGrimm ()


  • Das ist nett, aber aktuell lasse ich die Datei beerits neu erstellen,beschreiben und speichern.
    Jedoch muss ich dabei gleichzeitig noch das Passwort raus filtern und neu setzen, und ich wollte wissen, ob man nicht einfach die Datei umbennen kann & nicht neu beschreiben.
    PS: Ist zwar nett das du alles raus gesucht hast, auch das um Werte zu setzen was hier gar nicht angebracht ist, aber in der Lage bin ich das ich weiß wie dies funktioniert.
    Mir gehts lediglich um das umbenennen einer Datei.

    KleineHilfe 2.0

  • Kommt drauf an, wenn du z.B. nur eine Fraktionsdatei umbenennen willst, kannst du einfach die Werte kopieren, neue Datei erstellen, Werte rein & dann das auslesen im Script an die Datei anpassen.


    Das nennt sich dann aber nicht umbenennen sondern lediglich "neu erstellen" & das ist nicht das nach dem ich gefragt habe. :)

    KleineHilfe 2.0

  • Wie mache ich es wenn ein Spieler "/notruf" eingibt,das ALLE Polizisten eine nachricht beckommen?
    Also ich habe alles nur ich weiß nicht wie ich das machen soll das der polizist eine nachricht beckommt

    New Nexo Reallife.


    <3

  • Wie mache ich es wenn ein Spieler "/notruf" eingibt,das ALLE Polizisten eine nachricht beckommen?
    Also ich habe alles nur ich weiß nicht wie ich das machen soll das der polizist eine nachricht beckommt


    Du ziehst eine for( schleife durch alle Spieler die auf dem Server sind, und fragst ab wer Polizist ist.
    Dach verschickst du die Nachricht

    KleineHilfe 2.0

  • Ich brauch ma eben hilfe


    Bei der Funktion:
    stock GetUserID(playerid)
    {
    new query[128],GetName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,GetName,MAX_PLAYER_NAME);
    format(query, sizeof query, "page=id&name=%s", GetName);
    HTTP(playerid, HTTP_POST, "dt-rp.de/server/register.php", query, "UserIDGet");
    }
    public UserIDGet(playerid, response_code, data[])
    {
    if(response_code != 200)
    {
    SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
    Kick(playerid);
    }
    else
    {
    if(!strcmp(data,"Error",true))
    {
    SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
    Kick(playerid);
    return 1;
    }
    else
    {
    return strval(data);
    }
    }
    return 1;
    }
    Soll er mir die userid ausgeben
    Problem bei der sache ist, wie ich das mit php hinbekommen kann..
    Hat da jemand ne idee?

    All in all it's just another brick in the wall

  • Das nennt sich dann aber nicht umbenennen sondern lediglich "neu erstellen" & das ist nicht das nach dem ich gefragt habe. :)


    Anders ist es aber nicht möglich

  • Problem bei der sache ist, wie ich das mit php hinbekommen kann..


    Der Parameter data[] im Callback enthält alles, was im HTML Quellcode steht.


    Sprich du schreibst einfach nur sowas:


    PHP
    echo GetID($_POST["name"]); //GetID ist nur eine Funktion ausgedacht...musst halt deine verwenden um an die ID zu kommen, die du ausgeben willst.


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das is mir klar

    PHP
    $query = mysql_query("SELECT * FROM `wcf1_user` WHERE `username` = '$username' LIMIT 1;");
    				if(mysql_num_rows($query))
    				{
    					while($row = mysql_fetch_array($query)) 
    					{
    						$ID = $row["userID"];
    					}
    				}
    				mysql_free_result($query);
    				echo $ID;


    Jedoch gibt er mir immer den wert 1 wieder X(

    All in all it's just another brick in the wall


  • Threads Threads und nochmal Threads :cursing:


    Du verwendest das ganze bestimmt in solch einer Art:
    variable[playerid] = GetUserID(playerid);
    bzw.
    if( GetUserID(playerid) .... )


    Falls die Vermutung stimmt:

    • GetUserID( ... ) return't nichts, Folge: immer 1


    Das ganze HTTP(...) läuft threaded ab (wie bei den neusten MySQL Plugins)
    Kurz gesagt: Du erhältst das Ergebnis deines HTTP( ... ) Aufrufes nicht sofort, sondern erst zu einem späteren Zeitung (deswegen bringt auch dein "return" in "UserIDGet" nichts mehr)


    Ablauf von unterhalb stehendem Code(genaue Erklärung)

    • variable[playerid] = GetUserID(playerid);
    • GetUserID(playerid) wird aufgerufen
    • Die HTTP(...) Anfrage wird gesendet und rutscht in den Hintergrund
    • GetUserID(playerid) wird beendet
    • Hier der Fehler: "variable[playerid]" erhält den Wert 1, da GetUserID keinen return Wert besitzt
    • Nun scheint alles geschehen zu sein... aber die HTTP(...) Anfrage wurde bis jetzt noch gar nicht vom Server fertig gestellt.
    • Alle Funktionen des Servers laufen nun weiter bis die HTTP(...) Anfrage fertig gestellt wurde (Neue Spieler können connecten, disconnecten, alles mögliche eben)
    • (Ein paar Augenblicke später) Sofern die HTTP(...) Anfrage nun fertig ist wird dein UserIDGet ausgeführt
    • Leider landet dein "return strval(data);", wie du schon vermuten wirst, im nirgendwo (der ganze Rest wurde ja leider oberhalb schon (falsch) getan :whistling: )


    Der rot markierte Teil:

    • Beschreibt den eigentlichen Sinn des Aufbaus von HTTP(...), der Server kann weiterarbeiten während die HTTP-Anfrage ausgeführt wird (wie bei den neusten MySQL Plugins)
    • Zum anderen ganz wichtig: Der Server arbeitet weiter während die HTTP Anfrage im Hintergrund ist..... hm folgende Situation in meinem Kopf:

      • Spieler A(id 0) will sich Registrieren
      • Die HTTP Anfrage wird angefordert
      • Spieler A(id 0) verlässt den Server
      • Spieler B(id 0) betritt den Server
      • Die HTTP Anfrage wird fertig gestellt und ruft "UserIDGet" für ID 0 auf
      • KONFLIKT! Dein UserIDGet wird für einen ANDEREN User ausgeführt... so können möglicherweiße Accounts geklaut werden(?)



    Da denkt man doch nur noch, was ein Misst dieses Threading... :wacko:
    :D


    Hier mein Vorschlag: (ABER nur wenn du das oberhalb auch gut inspiziert hast! :D )

    new USERid[MAX_PLAYERS];
    stock GetUserID(playerid) // LoadUserID währe im dem Sinne vll ein besserer Name :p
    {
    new query[128],GetName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,GetName,MAX_PLAYER_NAME);
    format(query, sizeof query, "page=id&name=%s", GetName);
    HTTP(playerid, HTTP_POST, "dt-rp.de/server/register.php", query, "UserIDGet");
    }
    public UserIDGet(playerid, response_code, data[])
    {
    if(response_code != 200)
    {
    SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
    Kick(playerid);
    }
    else
    {
    if(!strcmp(data,"Error",true))
    {
    SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
    Kick(playerid);
    return 1;
    }
    else
    {
    USERid[playerid] = strval(data);
    return 1;
    }
    }
    return 1;
    }


    ACHTUNG!: Das eliminiert NICHT mein oben als "KONFLIKT!" markiertes Problem ;) Vll. fällt dir dazu selber was ein... der Beitrag wird mir allmählich zu lange

    <3

    Einmal editiert, zuletzt von d0. ()

  • Hi,
    ich lerne Pawn immoment (Davor hatte ich noch keine Ahnung) und gucke mir MrMonat an, jedoch habe ich ein Problem. beim Part #2 zeigt er ja den Spawn ändern. habe ich gemacht, das mit der Camera usw. und nein: Ich möchte kein Reallife/DM Server machen, ich lerne nur.
    So, hab so gemacht wie ers macht, nur bloß, wenn ich Ingame gehe, kommt ja: << >> Spawn. ich drücke auf >> und dann Spawn, er spawnt nicht. also ich kann 1000 mal auf Spawn drücken, passiert nichts.
    Hier erstmal die Scriptcodes:
    public OnGameModeInit(){
    SetGameModeText("Script"); AddPlayerClass(0,2033.5391,1342.8999,10.8203,270.1059,0,0,0,0,0,0); // position1 AddPlayerClass(1,2033.5391,1342.8999,10.8203,270.1059,25,200,0,0,0,0); // position1 return 1;}
    Und falls es was mit der Camera zu tun hat:


    public OnGameModeExit(){ return 1;}public OnPlayerRequestClass(playerid, classid){ SetPlayerPos(playerid,2033.5391,1342.8999,10.8203); SetPlayerFacingAngle(playerid,270.1059); SetPlayerCameraPos(playerid,2031.5399,1342.8796,10.8203); SetPlayerCameraLookAt(playerid,2031.5399,1342.8796,10.8203);}


    PS: Ich habe keine große Ahnung von Scripten. PS2: Falls es nur beim PAWN Quelltext nur 2 Zeilen gibt oder sogar weniger oder mehr bzw nicht so aussieht:
    test
    test


    dann weiß ich nicht, wie ich das fixxe.