[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
  • ich habe meine Ein/Ausgänge ein bisschen verändert das es übersichtlicher ist
    jetze meine Frage ich will das in Interrior's nur Frakmitglieder betretbar sind das funktiniert aber die wo alle rein sollen funktioniert es mit -1 sprich für alle nicht aber wieso ?


    //Oben im script
    enum InteriorEnum
    {
    F_ID,
    Float:enterX,
    Float:enterY,
    Float:enterZ,
    Worldid,
    Float:exitX,
    Float:exitY,
    Float:exitZ,
    Float:exitR,
    InteriorID,
    InteriorVirtualWorld,
    ErrorMs[128]
    }


    new Intenum[][InteriorEnum] =
    {
    {-1,1209.1383,-1752.1898,13.5935,0,387.8430,173.8047,1008.3828,91.6419,3,4,"Du bist nicht in der Fraktion!"},//Stadthalle rein
    .....


    OnGameModeInit
    for(new i=0; i<sizeof(Intenum); i++)
    {
    CreatePickup(1559,1,Intenum[i][enterX],Intenum[i][enterY],Intenum[i][enterZ],Intenum[i][Worldid]);
    printf("%i Pickups erstellt!)",i);
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    new string[128];
    for(new i=0; i<sizeof(Intenum); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Intenum[i][enterX],Intenum[i][enterY],Intenum[i][enterZ]))
    {
    if(sInfo[playerid][fraktion] == Intenum[i][F_ID])
    {
    if(GetPlayerVirtualWorld(playerid) == Intenum[i][Worldid])
    {
    SetPlayerPos(playerid,Intenum[i][exitX],Intenum[i][exitY],Intenum[i][exitZ]);
    SetPlayerFacingAngle(playerid,Intenum[i][exitR]);
    SetPlayerInterior(playerid,Intenum[i][InteriorID]);
    SetPlayerVirtualWorld(playerid,Intenum[i][InteriorVirtualWorld]);
    SetCameraBehindPlayer(playerid);
    }
    }
    else
    {
    format(string,sizeof(string),Intenum[i][ErrorMs]);
    SendClientMessage(playerid,ROT,string);
    }
    }
    }
    return 1;
    }

  • Kaliber:
    Jeffry:
    Vielen Danke heute erst wieder angefangen zu Scripten :D


    wenn ich ein O-Park system mache muss ich nur
    enum carEnum{
    id_x,
    model,
    besitzer,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    db_id,
    pctank,
    ckz,
    //Neu
    Opark
    Float:o_x,
    Float:o_y,
    Float:o_z
    }



    Dann einfach Opark auf 1 Setzen sprich gesperrt und dann einfach beim laden und erstellen vom Fahrzeug einfach abfragen ob Opark auf 1 ist und dann halt bei den Kordinaten o_x,o_y,o_z erstellen und beim Freikaufen Opark auf 0 setzen
    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }

    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][pctank]=cache_get_field_content_int(i,"tank",dbhandle);
    cache_get_field_content(i,"Kennzeichen",cInfo[id][ckz],dbhandle,20);
    cInfo[id][db_id]=cache_get_field_content_int(i,"id",dbhandle);
    cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    SetVehicleNumberPlate(cInfo[id][id_x],cInfo[id][ckz]);
    tank[cInfo[id][id_x]] = (cInfo[id][pctank]);
    }
    return 1;
    }

  • habs hinbekommen :D


    aber jetze wollte ich die Jobcars auch ein bisschen Ordentlicher machen aber es geht net
    ich steige ein aber werde nicht rausgeworfen aus dem Car ?
    enum JobCars
    {
    Jobid,
    model,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    Color1,
    Color2
    }


    new Jobc[][JobCars] =
    {
    {1,411,1204.1155,-1744.7194,13.5923,90.00,1,1}
    };


    for(new c=0; c<sizeof(Jobc); c++)
    {
    AddStaticVehicleEx(Jobc[code=c][model],Jobc[code=c][c_x],Jobc[code=c][c_y],Jobc[code=c][c_z],Jobc[code=c][c_r],Jobc[code=c][Color1],Jobc[code=c][Color2],-1);
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    for(new i = 0; i<sizeof(Jobc); i++)
    {
    if(GetPlayerVehicleID(playerid) == i)
    {
    if(sInfo[playerid][pjob] == Jobc[i][Jobid])
    {
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    }
    }
    return 1;
    }

  • for(new c=0; c<sizeof(Jobc); c++)
    {
    Jobc[code=c][v_ID] = AddStaticVehicleEx(Jobc[code=c][model],Jobc[code=c][c_x],Jobc[code=c][c_y],Jobc[code=c][c_z],Jobc[code=c][c_r],Jobc[code=c][Color1],Jobc[code=c][Color2],-1);
    }


    if(GetPlayerVehicleID(playerid) == i)
    zu:
    if(GetPlayerVehicleID(playerid) == Jobc[i][v_ID])



    Und nochmal... dieser Thread ist für kleine Fragen und nicht für komplette Systeme. Mach doch für sowas einen Thread auf, das bewahrt die Übersichtlichkeit.

  • Hast du ein Ingamebefehl dafür? Dann arbeite mit timern.
    Wenn nicht musst du die Konsole x-en (?) bzw. exit eingeben.

  • Gibt es eine Funktion mit der ich ein Befehl erstellen kann sodass das Wasser Ingame ausgeblendet wird z.B indem ich ein andere Virtuelle Welt oder Interior benutze?
    Brauche soetwas damit ich im Wasser besser Mappen kann (Insel)..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Nein gibt es nicht.
    Soweit ich weiß kann man das Wasser nicht wegmachen (?!)

  • Mich würde mal Interessieren warum OnPlayerDisconnect, OnGameModeExit oder OnRconCommand bei dem GMX nicht ausgeführt werden; Das macht es mich schwerer die Fahrzeuge zu speichern.


    OnPlayerDisconnect und OnGameModeExit, werden bei einem gmx aufgerufen.


    Wenn du dafür einen Command hast, nutz doch den zum Speichern

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • @Mencent:
    @BlackAce:


    Ich hatte als test mal einen Ingame Command, ohne Timer...keine Chance..mit super funktional.


    Also savePlayer(..); wird immer beim gmx ausgeführt.


    mysql_format(dbhandle, query, sizeof query, "SELECT * FROM `privatecars` WHERE `Besitzer` = '%e'", getPlayerName(id)),
    mysql_pquery(dbhandle, query, "SavePlayerVehicles", "i", id),


    Deswegen gebe ich aktuell immer /saveserver vor dem GMX ein!


    ocmd:saveserver(playerid)
    {
    if(sInfo[playerid][sAdminlevel] < 5)return SendClientMessage(playerid, COLOR_RED, "FEHLER: {FFFFFF}Du kannst diesen Befehl nicht nutzen.");
    if(sInfo[playerid][sAdmindienst] == 0)return SendClientMessage(playerid, COLOR_RED, "FEHLER: {FFFFFF}Du bist nicht im Dienst.");
    for(new i, query[128]; i<GetMaxPlayers();i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!IsPlayerNPC(i))
    {
    if(sInfo[i][sAngemeldet] == 1)
    {
    mysql_format(dbhandle, query, sizeof query, "SELECT * FROM `privatecars` WHERE `Besitzer` = '%e'", getPlayerName(i)),
    mysql_pquery(dbhandle, query, "SavePlayerVehicles", "i", i),
    savePlayer(i);
    }
    }
    }
    }
    new string[128];
    format(string, sizeof string, "SERVER: {FFFFFF}%s %s speichert alle Serverbezogenen Inhalte.", getPlayerAdminRang(playerid), getPlayerName(playerid)),
    SendClientMessageToAll(COLOR_RED, string);
    return 1;
    }


    mfg :thumbup:

  • @Mencent:


    mysql_format(dbhandle, query, sizeof query, "SELECT * FROM `privatecars` WHERE `Besitzer` = '%e'", getPlayerName(playerid)),
    mysql_pquery(dbhandle, query, "SavePlayerVehicles", "i", playerid);


    Ich möchte dass das auch bei OnPlayerDisconnect ausgeführt wird.


    mfg :thumbup:

  • Ich weiß nicht ob ich dein Problem nicht richtig verstehe, aber warum fügst du das nicht einfach unter OnPlayerDisconnect ein?

  • Das könnte dann daran gelegen haben, das die Dantenbankconnection nicht mehr bestand.


    Müsste man aber in der mysql_log sehen können

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

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