[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
  • Schnelle Frage:
    Ich habe einen /gotoxyz Befehl, aber der funktioniert nur, wenn man die Koordinaten mit Leertasten schreibt. (Beispiel: /gotoxyz 1337.0 1337.0 13.37 0 0)
    Aber ich möchte das halt so machen, dass man die Koordinaten mit den Komma's einsetzen soll, da mir das persönlich einfacher und nicht so aufwendig ist, wenn ich mal schnell an einem Ort muss, anstatt erst die Koordinaten zu formatieren.


    Mein Befehl sieht so aus:

    COMMAND:gotoxyz(playerid,params[])
    {
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    new string[128],Float:x,Float:y,Float:z,interior,world;
    if(Spieler[playerid][pAdminOnduty] == false)return SendClientMessage(playerid,GRAU,"Du bist nicht im Admindienst.");
    if(sscanf(params,"fffii",x,y,z,interior,world))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /gotoxyz [Xcord Ycord Zcord][Interior][Virtuelle Welt]");
    if(x >= 20000.0 || y >= 20000.0 || z >= 10000)return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
    if(IsPlayerInAnyVehicle(playerid))
    {
    new seatid = GetPlayerVehicleSeat(playerid);
    SetPlayerPosEx(playerid,x,y,z);
    SetVehiclePosEx(GetPlayerVehicleID(playerid),x,y,z);
    PutPlayerInVehicleEx(playerid,GetPlayerVehicleID(playerid),seatid);
    SetPlayerInterior(playerid,interior);
    SetPlayerVirtualWorld(playerid,world);
    SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),world);
    LinkVehicleToInterior(GetPlayerVehicleID(playerid),interior);
    format(string,sizeof(string),"Du hast dich zu den Coordinaten %.1f,%.1f,%.1f [Interiorid : %i][Virtuelle Welt: %i] geportet.",x,y,z,interior,world);
    SendClientMessage(playerid,GELB,string);
    }
    else
    {
    SetPlayerPosEx(playerid,x,y,z);
    SetPlayerInterior(playerid,interior);
    SetPlayerVirtualWorld(playerid,world);
    format(string,sizeof(string),"Du hast dich zu den Coordinaten %.1f,%.1f,%.1f [Interiorid : %i][Virtuelle Welt: %i] geportet.",x,y,z,interior,world);
    SendClientMessage(playerid,GELB,string);
    }
    return 1;
    }



  • inero = GetPlayerInterior(playerid);


    if(!inero == 0)return SendClientMessage(playerid,HQInfo,"(( Spieler ist in einem Interior ))");









    D:\Spiele\server\gamemodes\SFRP.pwn(5502) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • GetPlayerPoolSize gibt dir die höchste ID aus, GetMaxPlayers die höchstmögliche ID+1 (also die Anzahl an Slots).
    Mit der Nutzung von GetPlayerPoolSize sind Schleifen durch alle Spieler etwas schneller, allerdings gibt es bessere Möglichkeiten wie zum Beispiel foreach oder ähnliche.

  • [16:48:07] [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 '`pArchs0` int(2) NOT NULL,`pArchs1` int(2) NOT NULL,`pArchs2` int(2) NOT NULL,`p' at line 1


    EDIT: Hier die Speicherung
    for(new i=0;i<MAX_ARCHIVMENTS;i++)
    {
    mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s,pArchs%i='%d'",mainquery,i,Spieler[playerid][pArchs][i]);
    }

  • strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");
    for(new i=0;i<MAX_ARCHIVMENTS;i++)
    {
    mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s,pArchs%i='%d'",mainquery,i,Spieler[playerid][pArchs][i]);
    }
    mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s WHERE Name='%s'",mainquery,Spieler[playerid][pName]);
    mysql_function_query(MySqlConnection,mainquery,false,"","");
    strdel(mainquery,0,sizeof(mainquery));


    for(new i=0;i<MAX_ARCHIVMENTS;i++)
    {
    strcat(query,",");
    format(query,sizeof(query),"%s`pArchs%i` int(2) NOT NULL",query,i);
    }
    strcat(query,")");
    mysql_function_query(MySqlConnection,query,false,"","");
    strdel(query,0,sizeof(query));


    Es ist so habe insgesammt 35 Archivments die man im Spiel bekommen kann. Und ich wollte das das es zum "strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");" datz gespeichert wird.. Jedoch gehts nicht

  • Der erste Teil sollte so aussehen:
    strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");
    for(new i=0;i<MAX_ARCHIVMENTS;i++)
    {
    mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s%spArchs%i='%d'",mainquery,(i!=0)?(","):(""),i,Spieler[playerid][pArchs][i]);
    }
    mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s WHERE Name='%s'",mainquery,Spieler[playerid][pName]);
    mysql_function_query(MySqlConnection,mainquery,false,"","");
    strdel(mainquery,0,sizeof(mainquery));


    Beim zweiten Teil kann ich es dir nicht sagen, da fehlt der Anfang.

  • Beitrag von Fernando_Jizuya ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von Akino Kiritani ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen