[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
  • @Kaliber hast du eine Idee ?

    Grundsätzlich kannst du davon ausgehen, dass du etwas vergessen hast, wenn sowas passiert :)


    Entweder eine { oder } oder eine oder ) oder sogar " oooder ;


    Wenn du vergessen hast z.B. den String wieder zu schließen :)


    Manchmal gibt der da Errors, aber manchmal reagiert der compiler auch sehr allergisch darauf und verabschiedet sich ^^


    Deshalb Code nochmal genau anschauen ;)

    ast2ufdyxkb1.png


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

  • Beitrag von xPatrick ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: gelöst von selber ().
  • Hallo & danke für eure Hilfe :)



    ocmd:ahelp(playerid,params[])
    {
    if(!IsPlayerGM(playerid,1)) return 1;
    SendClientMessage(playerid,-1,"{ffffff}|_________________________{ff0000}Befehlsliste{ffffff}_________________________|");
    switch(sInfo[playerid][Adminlevel])
    {
    case 1: SendClientMessage(playerid,-1,"{fdff00}[GS]Gamesage:{ffffff} /a (Adminchat) /msg (Private Nachricht) /ahelp(Liste CMDs) /clearchat /goto & /gethere (Teleport)");
    SendClientMessage(playerid,-1," {ffffff} /freeze & / unfreeze /aduty /spawn");
    case 1 - 2: SendClientMessage(playerid,-1,"{ffb600}[GM]Gamemaster:{ffffff} /tv (Spieler beobachten) /kick /ban /setleader (Stellt einen Leader für eine Fraktion ein)");
    SendClientMessage(playerid,-1," {ffffff} /ooc (OOC An/Aus)");
    case 1 - 3: SendClientMessage(playerid,-1,"{f60b1d}{[ADM]Admin: {ffffff}/restart (Serverneustart) /setadmin (ID + Rang 1-3 /veh (560 Sultan, 487 Maverik, 522 NRG )");
    }
    return 1;
    }


    Wie kann mein bei einen case mehrere SendClients folgen lassen?


    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(536) : error 002: only a single statement (or expression) can follow each "case"
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(536) : warning 215: expression has no effect
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(537) : warning 217: loose indentation
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(537) : error 014: invalid statement; not in switch
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(537) : warning 215: expression has no effect
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(537) : error 001: expected token: ";", but found ":"
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(537) : error 029: invalid expression, assumed zero
    C:\Users\xPaddz\Desktop\Scriptsachen\Selfmade\gamemodes\Roleplay.pwn(537) : fatal error 107: too many error messages on one line


    Die Errors beziehen sich immer auf die SendClient Zeile unter der case Zeile

  • Versuche es mal so so kannst die Befehle immer anpassen


    case 1: //Admin Level 1 case 2: //Admin Level 2 case 3: //Admin Level 4 -> Usw



  • ocmd:ahelp(playerid, params[])
    {
    if(!IsPlayerGM(playerid,1)) return 1;
    SendClientMessage(playerid, -1, "{ffffff}|_________________________{ff0000}Befehlsliste{ffffff}_________________________|");
    switch(sInfo[playerid][Adminlevel])
    {
    case 1:
    {
    SendClientMessage(playerid, -1, "{fdff00}[GS]Gamesage:{ffffff} /a (Adminchat) /msg (Private Nachricht) /ahelp(Liste CMDs) /clearchat /goto & /gethere (Teleport)");
    SendClientMessage(playerid, -1, " {ffffff} /freeze & / unfreeze /aduty /spawn");
    }
    case 1, 2:
    {
    SendClientMessage(playerid, -1, "{ffb600}[GM]Gamemaster:{ffffff} /tv (Spieler beobachten) /kick /ban /setleader (Stellt einen Leader für eine Fraktion ein)");
    SendClientMessage(playerid,- 1, " {ffffff} /ooc (OOC An/Aus)");
    }
    case 1 .. 3:
    {
    SendClientMessage(playerid, -1, "{f60b1d}{[ADM]Admin: {ffffff}/restart (Serverneustart) /setadmin (ID + Rang 1-3 /veh (560 Sultan, 487 Maverik, 522 NRG )");
    }
    }
    return 1;
    }

  • Hey,


    Kurze frage:



    Warum kriegt der spieler trd die Drogen obwohl keine Vorhanden sind?
    Er gibt mir die Message auch aus das keine Drogen mehr vorhanden sind?

  • Weil du in deinem if block in dem du die menge abfragst kein return drin hast oder halt kein else benutzt.

    Danke, Habs eben gesehn wahr ein schnelligkeits fehler danke :D



    //E:



    Hey,


    Habe kurz eine frage man kann per /dl sehen welche ID das Fahrzeug hat.
    Wen ich das mache und /carinfo [Model-ID] Funktioniert das nicht.


    Habe new vID; Versucht
    Und das was momentan drinnen ist.

    2 Mal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Code aktualisiert.

  • Wie erstellst du das Objekt? Kannst du den Code dazu bitte mal posten?


    ocmd:folgen(playerid,params[])
    {
    if(!IsACop(playerid)) return SendClientMessage(playerid,-1,"");
    new veh = GetPlayerVehicleID(playerid);
    if(Folgen[veh] != INVALID_OBJECT_ID)
    {
    DestroyDynamicObject(Folgen[veh]);
    Folgen[veh] = INVALID_OBJECT_ID;
    }
    else
    {
    Folgen[veh] = CreateDynamicObject();
    SetDynamicObjectMaterialText(Folgen[veh],0,
    AttachDynamicObjectToVehicle(Folgen[veh],veh,0.000,-1.684,0.45,-57.0,0,0);
    }
    return 1;
    }

    nicht kommplet! Weil es muss ja nicht jeder gleich meine sachen kopieren können

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wen ich das mache und /carinfo [Model-ID] Funktioniert das nicht.

    Weil du nicht die modelid willst, sondern die vehicleid.


    Das eine ist die Modell-Nr, also z.B. Infernus = modelid.


    vehicleid = Die eindeutige Fahrzeug ID, wie sie erstellt wurde, (also das erste Fahrzeug ist 1, dann 2 usw).

    ast2ufdyxkb1.png


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

  • nicht kommplet! Weil es muss ja nicht jeder gleich meine sachen kopieren können

    Ich benötige den ganzen Code, zumindest was das Objekt betrifft, andernfalls kann ich es schlecht beurteilen wo das Problem liegt, bzw. es selbst ausprobieren.
    Da es ohnehin nicht funktioniert, spielt es doch auch keine Rolle ob es jemand kopiert.

  • Verstehe es nicht...


    habe es mal getestet ein befehl zu machen ein fahrzeug zu mir zu porten nach id das klappt..




    aber das mit /carinfo nicht

  • Ich benötige den ganzen Code, zumindest was das Objekt betrifft, andernfalls kann ich es schlecht beurteilen wo das Problem liegt, bzw. es selbst ausprobieren.Da es ohnehin nicht funktioniert, spielt es doch auch keine Rolle ob es jemand kopiert.


    ocmd:folgen(playerid,params[])
    {
    if(!IsACop(playerid)) return SendClientMessage(playerid,-1,"");
    new veh = GetPlayerVehicleID(playerid);
    if(Folgen[veh] != INVALID_OBJECT_ID)
    {
    DestroyDynamicObject(Folgen[veh]);
    Folgen[veh] = INVALID_OBJECT_ID;
    }
    else
    {
    Folgen[veh] = CreateDynamicObject(19329, 73.70150, 1677.82495, 18.12200, -57.0000, 0.00000, 0.00000);
    SetDynamicObjectMaterialText(Folgen[veh],0,"POLIZEI\nBITTE FOLGEN",OBJECT_MATERIAL_SIZE_256x128,\"Arial",27,0,0xFFFF0000,0x00000000,1);
    AttachDynamicObjectToVehicle(Folgen[veh],veh,0.000,-1.684,0.45,-57.0,0,0);
    }
    return 1;
    }

  • BITTE FOLGEN

    Also bei mir funktioniert das ohne Probleme, mit dem Code.




    Du könntest versuchen, das Objekt an der Stelle des Spielers (GetPlayerPos) zu erstellen, anstatt an der fest definierten, vielleicht hilft das. Ich hatte damit schon Probleme, wenn ich Objekte bei 0,0,0 erstellt habe.


    Das Array "Folgen" hast du auch mit MAX_VEHICLES deklariert, oder?

  • Ach stimmt, daran hatte ich nicht mehr gedacht.Im Timer hast du "PoliceLight" als Array verwendet, im Befehl "Folgen". Das dürfte der Grund sein.

    ich habe jetzt so das Public zum Blinken
    der Timer wird über OnGameModeInit aufgerufen und läuft durch (ja scheiß metode aber zum testen ist es erstmal egal :) )

    new PoliceLightFlashID = 0;
    forward PoliceLightFlash();
    public PoliceLightFlash()
    {
    PoliceLightFlashID++;
    if(PoliceLightFlashID > 1)
    {
    for(new x = 0; x < MAX_VEHICLES; x++)
    {
    if(IsValidVehicle(x) && Folgen[x] != INVALID_OBJECT_ID) SetDynamicObjectMaterialText(Folgen[x],0,"POLIZEI\nBITTE FOLGEN",OBJECT_MATERIAL_SIZE_256x128,\"Arial",27,0,0xFFFF0000,0x00000000,1);
    }
    PoliceLightFlashID = 0;
    }
    else
    {
    for(new x = 0; x < MAX_VEHICLES; x++)
    {
    if(IsValidVehicle(x) && Folgen[x] != INVALID_OBJECT_ID) SetDynamicObjectMaterialText(Folgen[x],0," ",OBJECT_MATERIAL_SIZE_256x128,\"Arial",20,0,0xFFFF0000,0x00000000,1);
    }
    }
    }

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