[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
  • @Jeffry


    Es funktioniert, aber ich verstehe nicht wieso es nicht auf meine Art funktioniert, denn bei meinem Explode Befehl ist das eigentlich ziemlich gleich und dort funktioniert es problemlos.


    [hide]CMD:explode(playerid, params[]) { new playerID, cQuery[38 + (MAX_PLAYER_NAME * 2)], Float:ePos[3]; if(pData[playerid][P_Admin] < 3) return SendClientMessage(playerid, COLOR_RED, LV_Fail); if(sscanf(params,"u", playerID)) return SendClientMessage(playerid, COLOR_RED, "Use: /explode <playerid>"); if(!IsPlayerConnected(playerID)) return SendClientMessage(playerid, COLOR_RED, ID_Fail); GetPlayerPos(playerID, ePos[0], ePos[1], ePos[2]); CreateExplosion(ePos[0], ePos[1], ePos[2], 7, 10.0); format(cQuery, sizeof(cQuery),"{%06x}%s {FFFFFF}has exploded {%06x}%s", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetPlayerColor(playerID) >>> 8, GetName(playerID)); SendClientMessageToAll(-1, cQuery); return 1;}[/hide]

    Dort benutzt du aber auch playerid und eigendefinierte params ID.
    Wenn du mit Public arbeitest musst du aber auch die zu nutzenden Variablen nutzen in dem Fall playerid, issuerid - OnPlayerDeath playerid, killerid & co.
    Sonst sind deine Ausgaben nicht Funktionsbezogen,
    lg

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()

  • Hey ich habe mal die frage warum wird das Object nicht gelöscht ?


  • Postpack[playerid] = SetPlayerAttachedObject(playerid,1,1271,1,0.17,0.42,0.00,0.0,448.0,1.0,0.85,0.67,0.69);
    zu:
    SetPlayerAttachedObject(playerid,1,1271,1,0.17,0.42,0.00,0.0,448.0,1.0,0.85,0.67,0.69);


    Und
    RemovePlayerAttachedObject(Postpack[playerid],1);
    zu:
    RemovePlayerAttachedObject(playerid,1);



    Dort brauchst du kein Array, da du über den Attachment-Slot (1) arbeitest.

  • @Jeffry

    Code
    SelectOwnAndMaxCarByFactionID(fID,owningCars,maxCars){
    [...]
    owningCars = value;
    maxCars = value;
    [...]
    }

    Ich habe das problem, das meine beigelegte Variablen nicht per Referenz geändert werden.
    Die Wirkung soll ähnlich sein wie bei GetPlayerPos usw.
    Sprich: Variablen beifügen und diese modifizert wieder erhalten.
    Doch hier erhalte ich nur 0 zurück.
    Vorher initialisiert mit dem Standardwert 0 und bekomme 0 (unmodifiziert) zurück.
    Aber wo ich die Werte debugged habe, so habe ich den erhofften Wert erhalten. Wohl gemerkt nur in der Funktion/Methode selbst.

  • Gibts inzwischen denn Möglichkeiten ein bestimmtes FahrzeugModel nur als Objekt zu erstellen, so dass man es dann zB an einen Lastwagen "attachen" kann?
    Fahrzeuge selber kann und wird man wahrscheinlich ja nie wirklich irgendwo anbinden können. :/

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Abend, undzwar habe ich folgende Probleme mit 2 Befehlen, undzwar möchte ich Fraktionsfahrzeuge vom Skript aus Erstellen lassen, soweit klappen die Befehle, aber ich habe da ein paar Fehler.


    Befehle:


    ocmd:fcerstellen(playerid,params[])
    {
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SendClientMessage(playerid,0xFF0000FF,"{DB4447}Info: {F2F2F2}Das Limit der Fahrzeuge wurde erreicht, es können keine weiteren Fahrzeuge erstellt werden!");
    new model, fID, color1 = -1, color2 = -1;
    if(sscanf(params,"dddd",model,fID,color1,color2)) return SendClientMessage(playerid,0x00D2D2FF,"{DB4447}Info: {F2F2F2}/fcerstellen [Model] [FraktionsID] [Farbe1] [Farbe2]");
    if(model < 400 || model > 611) return SendClientMessage(playerid, 0xFF0000FF, "{E83A3D}Error: {F2F2F2}Model ID existiert nicht.");
    for (new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(FrakVeh[i][fc_vID] == 0)
    {
    new Float:x, Float:y, Float:z, Float:r;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,r);
    if(FrakVeh[i][fc_Erstellt] == true) continue;
    FrakVeh[i][fc_modelID] = model;
    FrakVeh[i][fc_Erstellt] = true;
    FrakVeh[i][fc_x] = x;
    FrakVeh[i][fc_y] = y;
    FrakVeh[i][fc_z] = z;
    FrakVeh[i][fc_r] = r;
    FrakVeh[i][fc_color1] = color1;
    FrakVeh[i][fc_color2] = color2;
    FrakVeh[i][fc_frakID] = fID;
    new query[256];
    format(query, sizeof(query), "INSERT INTO `Frakcars` (fcID, ModelID, PosX, PosY, PosZ, PosR, Color1, Color2, FrakID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
    i, FrakVeh[i][fc_modelID], FrakVeh[i][fc_x], FrakVeh[i][fc_y], FrakVeh[i][fc_z], FrakVeh[i][fc_r], FrakVeh[i][fc_color1], FrakVeh[i][fc_color2], FrakVeh[i][fc_frakID]);
    mysql_tquery(DBHandle, query);
    FrakVeh[i][fc_vID] = CreateVehicle(FrakVeh[i][fc_modelID], FrakVeh[i][fc_x], FrakVeh[i][fc_y], FrakVeh[i][fc_z], FrakVeh[i][fc_r], FrakVeh[i][fc_color1], FrakVeh[i][fc_color2], -1);
    PutPlayerInVehicle(playerid, FrakVeh[i][fc_vID], 0);
    format(query,sizeof(query),"{DB4447}Info: {F2F2F2}Das neue Fahrzeug: %s wurde erfolgreich für die Fraktion %s in die Datenbank gespeichert!",VehicleName[model-400],Spieler[playerid][pFraktion]);
    return 1;
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "{E83A3D}Error: {F2F2F2}Das Limit für die maximale Anzahl der für die Fraktion erstellten Fahrzeuge ist erreicht.");
    }


    ocmd:fcloeschen(playerid,params[])
    {
    #pragma unused params
    new vID; vID = GetPlayerVehicleID(playerid);
    if(sscanf(params,"d",vID)) return SendClientMessage(playerid, 0xFF0000FF, "{DB4447}Info: {F2F2F2}Um ein Fahrzeug zu löschen, setze dich in dieses, oder gebe die Fahrzeug ID ein");
    if(!IsPlayerAnAdmin(playerid,3)) return SendClientMessage(playerid,0x00D2D2FF,"{E83A3D}AdmCmd: {F2F2F2}Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,0x00D2D2FF,"{DB4447}Info: {F2F2F2}Du bist nicht der Fahrer des Fahrzeugs.");
    if(!IsAFraktionsVeh(vID)) return SendClientMessage(playerid, 0xFF0000FF, "{E83A3D}Error: {F2F2F2}Du sitzt in keinem [Fraktions] - Fahrzeug.");
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(FrakVeh[i][fc_vID] == vID)
    {
    FrakVeh[i][fc_modelID] = 0;
    FrakVeh[i][fc_x] = 0.0;
    FrakVeh[i][fc_y] = 0.0;
    FrakVeh[i][fc_z] = 0.0;
    FrakVeh[i][fc_r] = 0.0;
    FrakVeh[i][fc_color1] = 0;
    FrakVeh[i][fc_color2] = 0;
    FrakVeh[i][fc_frakID] = -1;
    new query[128];
    format(query, sizeof(query), "DELETE FROM `Frakcars` WHERE fcID = '%d'", i);
    mysql_tquery(DBHandle, query);
    DestroyVehicle(FrakVeh[i][fc_vID]);
    FrakVeh[i][fc_vID] = 0;
    return SendClientMessage(playerid, 0x00FF00FF, "{DB4447}Info: {F2F2F2}Das Fahrzeug wurde erfolgreich aus der Datenbank gelöscht.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "{E83A3D}Error: {F2F2F2}Vehicle-ID ist kein Fraktions-Fahrzeug.");
    }



    Probleme:

    • Ich möchte es so haben, das ich Maximal pro Fraktion erstmal 5 Fahrzeuge erstellen kann, dafür habe ich oben dies Definiert #define MAX_FRAC_VEHICLES 10#define MAX_FRAC_VEHICLES_ALLOWED 5. Das Problem nun ist, das ich Maximal nur 5 Fahrzeuge für alle Fraktionen zusammen erstellen kann.
    • Um ein Fahrzeug zu löschen, muss ich die Fahrzeug ID eingeben, aber ich möchte, das ich in dem Fahrzeug "sitzen" muss, damit dies wo ich drinne Sitze gelöscht wird.


    wäre Nett, wenn mir das jemand erklären könnte!

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

    – Noël Coward

  • Was habe ich falsch gemacht?



    enum ServerInfo{
    Ping,
    Fps,
    Float:Packetloss,

    SV_NAME[50] = ".: [LnD] BattleArena [DEVELOPMENT] :.",
    GM_NAME[25] = "BattleArena DeathMatch",
    GM_MAPN[15] = "San Andreas",
    GM_SITE[20] = "www.lndsquad.com",
    GM_LANG[15] = "All welcome"
    }



    error 008: must be a constant expression; assumed zero
    Error Zeile bei SV_Name


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hey habe ein Problem.Wenn ich ingame Spawne sterbe ich.
    public OnPlayerSpawn(playerid)
    {
    L_AntiWeaponHack(playerid);
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    //Server Bots
    new plrIP[16];
    GetPlayerIp(playerid, plrIP, sizeof(plrIP));
    if(strcmp(plrIP, "80.82.222.105", true) == 0)
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new string[123];
    format(string, sizeof(string), "UPDATE `users` SET `Status`='1' WHERE `Name`='%s'", sendername);
    self_mysql_queryEx(string);
    format(string, sizeof(string), "UPDATE `users` SET `Legende`='1' WHERE SQLid = '%d'", PlayerInfo[playerid][pSQLID]);
    self_mysql_queryEx(string);
    new Level = random(20) + 1;
    SetPlayerSkin(playerid, 1);
    SetPlayerScore(playerid, Level);
    PlayerInfo[playerid][pLevel] = Level;
    PlayerInfo[playerid][pSex] = 1;
    SetCameraBehindPlayer(playerid);
    PlayerInfo[playerid][pTut] = 1;
    StopAudioStreamForPlayer(playerid);
    PlayerInfo[playerid][pNummer] = 56854;
    PlayerInfo[playerid][pPhousekey] = -1;
    PlayerInfo[playerid][pBizKey] = -1;
    PlayerInfo[playerid][pBank] = 103456;
    GivePlayerMoneys(playerid, 5211);
    PlayerInfo[playerid][pCrimes] = 3;
    PlayerInfo[playerid][pArrested] = 0;
    PlayerInfo[playerid][pArrestTime] = 0;
    PlayerInfo[playerid][pKills] = 21;
    PlayerInfo[playerid][psKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    PlayerInfo[playerid][pMember] = -1;
    PlayerInfo[playerid][pLeader] = -1;
    /*Scheine*/
    PlayerInfo[playerid][pGunLic] = 1;
    PlayerInfo[playerid][pFlyLic] = 1;
    PlayerInfo[playerid][pCarLic] = 1;
    PlayerInfo[playerid][pBikeLic] = 1;
    gPlayerLogged[playerid] = 1;
    }
    mfg

  • Hey, habe ein Problem. Wenn ich einen Spieler beobachte und er danach stirbt, sehe ich nichts mehr und bin an dieser einen Stelle nähe Blueberry, bis ich den Spieler wieder mit dem Befehl beobachte. Ist das ein allbekannter Bug und gibt's da ein Fix für oder liegt das an meinem Code? Falls ja, poste ich ihn hier.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Du bist aber noch im spectate Modus, oder? Wenn ja, dann ist das ein bekannter Fehler. Ich habe den bei mir auf dem Server damals so umgangen, dass ich den spectate Modus automatisch neu gestartet habe, wenn der gestorbene Spieler wieder gespawnt ist (OnPlayerSpawn).

  • @Jeffry


    Ja, ich bin dann noch im Spectate Modus. Ich hab's mit OnPlayerUpdate versucht aber da war dann die Kamera immer so komisch.
    Was soll ich genau in OnPlayerSpawn machen? So sieht übrigens mein Code aus.



    Mit freundlichen Grüßen
    JustMe.77 8)