[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


  • Alles klar danke, kannst mir noch schnell sagen wie ich das hier definieren muss? Habe Maps in meinem Server eingefügt, per FS.


    Doch die gelöschen Objekte sind noch da, hatte ein Fehler beim definieren der Playerid.


    RemoveBuildingForPlayer(playerid, 7834, 1064.839, 1869.780, 13.921, 0.250);


    Error:


    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(44) : error 017: undefined symbol "playerid"


    Error geht weg wenn ich #define playerid; mache. Doch die Objekte sind immernoch nicht weg..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Jeffry:


    Hab ich ganz vergessen danke :)!


    Zu meinem Auto das ich erstellen wollte, ist ein paar Posts über uns:


    Code sieht so aus [ZCMD]:



    CMD:jmbullet(playerid, params[])
    {
    new tmpobjid;
    new carvid;
    CreateVehicle(541,-199.906,1221.879,19.324,177.737,0,0,-1);
    AddVehicleComponent(carvid, 1010);
    AddVehicleComponent(carvid, 1074);
    AddVehicleComponent(carvid, 1087);
    ChangeVehiclePaintjob(carvid, 1);


    tmpobjid = CreateDynamicObject(19483,0.0,0.0,-1000.0,0.0,0.0,0.0,-1,-1,-1,300.0,300.0);
    SetDynamicObjectMaterialText(tmpobjid, 0, "JustMe.77", 90, "Ariel", 20, 1, -16711936, 0, 1);
    AttachDynamicObjectToVehicle(tmpobjid, carvid, 0.000, 1.200, 0.292, 0.000, 270.000, 90.000);
    tmpobjid = CreateDynamicObject(1547,0.0,0.0,-1000.0,0.0,0.0,0.0,-1,-1,-1,300.0,300.0);
    SetDynamicObjectMaterial(tmpobjid, 0, 7419, "vegasbuild", "vgnwoodenwall_256", 0);
    AttachDynamicObjectToVehicle(tmpobjid, carvid, -0.020, -2.211, 0.100, 90.000, 90.000, 270.000);
    tmpobjid = CreateDynamicObject(19483,0.0,0.0,-1000.0,0.0,0.0,0.0,-1,-1,-1,300.0,300.0);
    SetDynamicObjectMaterialText(tmpobjid, 0, "LnD 77", 120, "Ariel", 20, 1, -65536, 0, 1);
    AttachDynamicObjectToVehicle(tmpobjid, carvid, -0.010, -2.220, 0.073, 0.000, 0.000, 270.000);
    }


    0 Errors, Ingame steht da Unkown Command.



    EDIT:


    Wenn ich den exakten Code in mein FS kopiere kommt:

    Spoiler anzeigen

    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1310) : warning 219: local variable "carvid" shadows a variable at a preceding level
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1317) : error 017: undefined symbol "CreateDynamicObject"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1318) : error 017: undefined symbol "SetDynamicObjectMaterialText"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1319) : error 017: undefined symbol "AttachDynamicObjectToVehicle"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1320) : error 017: undefined symbol "CreateDynamicObject"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1321) : error 017: undefined symbol "SetDynamicObjectMaterial"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1322) : error 017: undefined symbol "AttachDynamicObjectToVehicle"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1323) : error 017: undefined symbol "CreateDynamicObject"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1324) : error 017: undefined symbol "SetDynamicObjectMaterialText"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1325) : error 017: undefined symbol "AttachDynamicObjectToVehicle"
    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(1323) : warning 204: symbol is assigned a value that is never used: "tmpobjid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Spoiler anzeigen
    9 Errors.


    Mit freundlichen Grüßen
    JustMe.77 8)


  • Füg mal ein return 1; ein.

  • Jeffry: Nein daran sollte es nicht liegen, habe ein paar Maps entfernt. Und RWObjects sind 923


    Also wie du auf dem Bild siehst geht es bei mir ja, sprich an dem Code liegt es nicht. Du kannst es ja mal auf einem leeren Server (zum Beispiel mit grandlarc Gamemode) versuchen, ob es dann geht.
    Lass dir ggf. sonst mal die ID des Objekts per print ausgeben, welche ID bekommst du da?


  • Also wie du auf dem Bild siehst geht es bei mir ja, sprich an dem Code liegt es nicht. Du kannst es ja mal auf einem leeren Server (zum Beispiel mit grandlarc Gamemode) versuchen, ob es dann geht.
    Lass dir ggf. sonst mal die ID des Objekts per print ausgeben, welche ID bekommst du da?


    Habs als dynamic Object hinbekommen ^^

  • Weiß jemand warum ich keine Bots erstellen kann?


    NPC Filterscript wird geladen, aufnehmen kann ich auch und stoppen ebenfalls, nur am Ende ist keine Datei in meinem NPC Ordner (Den Recordings Ordner dadrin musste ich selber erstellen..)


    Edit1:


    Nebenbei wollte ich fragen wie ich sowas hier erstellen könnte: http://forum.sa-mp.com/showthread.php?t=520393


    Ich weiß ich muss ins Callback OnPlayerWeaponShot, habe mir Wiki angeschaut doch habe keine Ahnung wie ich das anstellen soll..


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • Hey Community,
    ich habe ein kleines Problem zu dem erstellen von Gangzonen.
    Hatte mich damit zuvor noch nie auseinander gesetzt...
    Hatte es mit 2 Varianten versucht aber nix klappt davon.
    Er zeigt alles an außer die Gangzone.


    new string[250];
    if (fInfo[id][ctf_text] != Text3D:-1)
    {
    Delete3DTextLabel(fInfo[id][ctf_text]);
    }
    if (!strlen(fInfo[id][ctf_team]))
    {
    format(string, sizeof(string), "\
    » %s «\n\
    TEAM: None",fInfo[id][ctf_name]);
    fInfo[id][ctf_pickup] = CreateDynamicPickup(1314, 1, fInfo[id][ctf_x], fInfo[id][ctf_y], fInfo[id][ctf_z], -1);
    M_CreateZone(fInfo[id][Min_x], fInfo[id][Min_y], fInfo[id][Max_x], fInfo[id][Max_y], fInfo[id][ctf_color], string, COLOR_RED);
    GangZoneShowForAll(fInfo[id][ctf_zone], fInfo[id][ctf_color]);
    }
    else
    {
    format(string, sizeof(string), "\
    » %s «\n\
    TEAM: %s",fInfo[id][ctf_name], fInfo[id][ctf_team]);
    fInfo[id][ctf_pickup] = CreateDynamicPickup(1314, 1, fInfo[id][ctf_x], fInfo[id][ctf_y], fInfo[id][ctf_z], -1);
    fInfo[id][ctf_text] = Create3DTextLabel(string, COLOR_RED, fInfo[id][ctf_x], fInfo[id][ctf_y], fInfo[id][ctf_z], 10, 0, 1);
    fInfo[id][ctf_zone] = GangZoneCreate(fInfo[id][Min_x], fInfo[id][Min_y], fInfo[id][Max_x], fInfo[id][Max_y]);
    GangZoneShowForAll(fInfo[id][ctf_zone], fInfo[id][ctf_color]);
    }

  • Also einmal erstellst du die Zone mit GangZoneCreate und einmal mit M_CreateZone, gibst aber keinen Wert an fInfo[id][ctf_zone] zurück.
    Das erscheint mir nicht ganz richtig.


    new string[64];
    if(fInfo[id][ctf_text] != Text3D:-1)
    {
    Delete3DTextLabel(fInfo[id][ctf_text]);
    }
    if (!strlen(fInfo[id][ctf_team]))
    {
    format(string, sizeof(string), "» %s «\nTEAM: None",fInfo[id][ctf_name]);
    fInfo[id][ctf_pickup] = CreateDynamicPickup(1314, 1, fInfo[id][ctf_x], fInfo[id][ctf_y], fInfo[id][ctf_z], -1);
    printf("M: %f / %f / %f / %f / %d", fInfo[id][Min_x], fInfo[id][Min_y], fInfo[id][Max_x], fInfo[id][Max_y], fInfo[id][ctf_color]);
    M_CreateZone(fInfo[id][Min_x], fInfo[id][Min_y], fInfo[id][Max_x], fInfo[id][Max_y], fInfo[id][ctf_color], string, COLOR_RED);
    printf("Zone: %d", fInfo[id][ctf_zone]);
    GangZoneShowForAll(fInfo[id][ctf_zone], fInfo[id][ctf_color]);
    }
    else
    {
    format(string, sizeof(string), "» %s «\nTEAM: %s",fInfo[id][ctf_name], fInfo[id][ctf_team]);
    fInfo[id][ctf_pickup] = CreateDynamicPickup(1314, 1, fInfo[id][ctf_x], fInfo[id][ctf_y], fInfo[id][ctf_z], -1);
    fInfo[id][ctf_text] = Create3DTextLabel(string, COLOR_RED, fInfo[id][ctf_x], fInfo[id][ctf_y], fInfo[id][ctf_z], 10, 0, 1);
    printf("G: %f / %f / %f / %f / %d", fInfo[id][Min_x], fInfo[id][Min_y], fInfo[id][Max_x], fInfo[id][Max_y]);
    fInfo[id][ctf_zone] = GangZoneCreate(fInfo[id][Min_x], fInfo[id][Min_y], fInfo[id][Max_x], fInfo[id][Max_y], fInfo[id][ctf_color]);
    printf("Zone: %d", fInfo[id][ctf_zone]);
    GangZoneShowForAll(fInfo[id][ctf_zone], fInfo[id][ctf_color]);
    }


    Schreibe es und poste dann was im Log steht.


  • Brauche immernoch Hilfe bitte :S


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Brauche immernoch Hilfe bitte


    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    if(weaponid == 34) //Damit das nur mit der Sniper geht
    {
    if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
    SetPlayerPos(playerid,fX,fY,fZ);
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Kaliber: Danke funktioniert so weit so gut, zwar nicht perfekt aber ich glaube besser kann man das nicht machen.


    Könntest du mir sagen wie ich das in ein Befehl einbinde, eventuell auch das man das ein und auschalten kann ? ZCMD oder OCMD.


    Und könntest du mir verraten wie ich das für mehrere Waffen einstellen kann, z.B nur 2 Stück, und wie alle :)


    Danke nochmal :love:



    Edit: Habe hinbekommen mehrere Waffen ID's hinzubekommen. Aber anstatt alle einzelnt hinzuzufügen gibt's da doch bestimmt ein Trick oder?


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • Schreibe es so:
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    switch(weaponid)
    {
    case 10..15, 28, 30..32, 34:
    {
    if(fX != 0.0 && fY != 0.0 && fZ != 0.0)
    {
    SetPlayerPos(playerid,fX,fY,fZ);
    }
    }
    }
    return 1;
    }
    Den return bei der if-Abfrage zu verwenden ist schlecht, denn wenn danach noch Code folgen sollte irgendwann, dann kann das zu Fehlern führen, an denen du ewig suchst wo das Problem liegt.
    Zwecks der mehreren Waffen, nutze den switch. In dem Beispiel gehen die IDs: 10,11,12,13,14,15,28,30,31,32,34
    Das ".." heißt "bis".

  • Jeffry: Ich habe das anders gelöst, einfach nochmal den Code verwendet und eine andere ID verwendet.
    Habe dein Code jetzt nicht ausgetestet, aber wenn ich z.B nur 2 Waffen habe möchte, und das .. bis bedeutet, wie soll's dann aussehen wenn ich nur die ID 24 und 34 haben will? Die ID's dazwischen möchte ich ja nicht.



    Und offen ist noch wie ich das mit einem Befehl erstelle, was mir am wichtigsten ist weil das sonst jeder kann :l


    Mit freundlichen Grüßen
    JustMe.77 8)


  • Jeffry: Ich habe das anders gelöst, einfach nochmal den Code verwendet und eine andere ID verwendet.
    Habe dein Code jetzt nicht ausgetestet, aber wenn ich z.B nur 2 Waffen habe möchte, und das .. bis bedeutet, wie soll's dann aussehen wenn ich nur die ID 24 und 34 haben will? Die ID's dazwischen möchte ich ja nicht.



    Und offen ist noch wie ich das mit einem Befehl erstelle, was mir am wichtigsten ist weil das sonst jeder kann :l


    Das würdest du dann umsetzen indem du das "case 10..15, 28, 30..32, 34:" einfach ersetzt mit "case 24, 34". Bei Jeffrys Lösung hätte dieses Case für die Waffenids 10, 11, 12, 13, 14, 15, 28, 30, 31, 32 und 34 gegriffen.



    Und selbst bei Jeffrys Lösung könntest du noch abfragen, ob der Spieler Admin ist..

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