[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
  • Es kommen immer diese Warnings:
    C:\Users\Curious\Desktop\Mapping SAMP\SAMP Server\gamemodes\AP.pwn(1423) : warning 213: tag mismatch
    C:\Users\Curious\Desktop\Mapping SAMP\SAMP Server\gamemodes\AP.pwn(1424) : warning 213: tag mismatch
    C:\Users\Curious\Desktop\Mapping SAMP\SAMP Server\gamemodes\AP.pwn(1432) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Warnings.


    bei diesem Code:
    new VLabelAdmins[50];
    if(GetPVarInt(playerid, "AdminVehLabelOn") == 0)
    {
    new string[200], aname[MAX_PLAYER_NAME];
    veh = GetPlayerVehicleID(playerid);
    GetPlayerName(playerid, aname, sizeof(aname));


    format(string, sizeof(string), "Team-Fahrzeug von %s", aname);
    VLabelAdmins[1] = Create3DTextLabel(string, COLOR_TOMATO, 0.0, 0.0, 0.0, 7.0, 0, 0);
    Attach3DTextLabelToVehicle(VLabelAdmins[1], veh, 0.0, 0.0, 1.2);


    SetPVarInt(playerid, "AdminVehLabelOn", 1);


    SendClientMessage(playerid, COLOR_GREY, "[OOC] Das Label wurde am Fahrzeug erstellt!");
    }
    else if(GetPVarInt(playerid, "AdminVehLabelOn") == 1)
    {
    Delete3DTextLabel(VLabelAdmins[1]);
    SetPVarInt(playerid, "AdminVehLabelOn", 0);


    SendClientMessage(playerid, COLOR_GREY, "[OOC] Das Label wurde vom Fahrzeug entfernt!");
    }


    Wie bekomm ich die Warnings weg?

  • Hi, versuche zufällig auf der Map Waffen in Form von Pickups spawnen zu lassen, habe aber keine Idee wie ich das korrekt anstellen soll.
    Kann mir jemand helfen?


    Das ist der Befehl womit die Waffen gespawnt werden sollen:



    CMD:estart(playerid,params[])
    {



    new emessage[124];

    EventStarted = true;
    format(emessage, sizeof(emessage),"{%06x}%s {FFFFFF}has started an Event. Use /ejoin to join the Event!", GetPlayerColor(playerid) >>> 8,SpielerName(playerid));
    SendClientMessageToAll(-1, emessage);



    //DropWeapon();
    return 1;



    }


    So sieht mein Stock aus (aktuell tauchen nur Errors aus weil ich alles falsch mache)




    stock DropWeapon()
    {
    new weapons[]
    {
    5, 6, 7, 8, 9, 10, 12, 13, 14, 15
    };



    new r = random(sizeof(RandomWeapons));



    CreateDynamicPickup(random(sizeof(weapons)), 19, RandomWeapons[r][0], RandomWeapons[r][1], RandomWeapons[r][2]);



    return 1;
    }



    Mit freundlichen Grüßen
    JustMe.77 8)

  • new RandomWeaponsIDs[] = {
    5, 6, 7, 8, 9, 10, 12, 13, 14, 15
    };
    stock DropWeapon()
    {
    new r = random(sizeof(RandomWeapons));
    new w = random(sizeof(RandomWeaponsIDs));
    CreateDynamicPickup(RandomWeaponsIDs[w], 19, RandomWeapons[r][0], RandomWeapons[r][1], RandomWeapons[r][2]);
    return 1;
    }

  • Dankesehr Jeffry.


    Wie muss ich vorgehen wenn ich z.B. 500 Spawns habe und von den 500 Spawns nur 100 benutzen möchte und das zufällig? Möchte jetzt nicht 100 mal copy & paste machen, das geht doch auch bestimmt anders, oder :P ?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Das ist ja die Frage, wie stelle ich das an? Habe aktuell nur Position festgelegt, aber noch keine Funktion erstellt wie viele Waffen davon gespawnt werden.


    So habe ich die Positionen festgelegt:



    new Float:RandomPos[][3] =
    {
    // Positions, (X, Y, Z)
    {685.6752,-2651.7720,8.0190}, // Item 1
    {684.8967,-2645.3086,10.0238}, // Item 2
    {694.2231,-2632.8337,6.1310}, // Item 3
    {705.6307,-2652.8721,6.1286}, // Item 4
    {711.4756,-2675.3149,6.1310}, // Item 5
    {718.3091,-2702.7249,6.0270}, // Item 6
    {740.3206,-2697.1089,6.0270}, // Item 7
    {749.1022,-2716.9546,22.1051}, // Item 8
    {770.3851,-2706.6096,24.0732}, // Item 9
    {764.4352,-2653.2769,24.0732} // Item 10





    };


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Versuche es so:
    stock DropWeapon(amount)
    {
    //Zwischenspeichern des RandomPos Arrays um darin zu arbeiten
    new Float:tmp[sizeof(RandomPos)][3];
    tmp = RandomPos;

    //Werte deklarieren
    new r,w,count = sizeof(RandomPos);

    //Schleife für die Anzahl der Waffen die erstellt werden sollen
    for(new i = 0; i < amount; i++)
    {
    //Zufallswerte generieren
    r = random(count);
    w = random(sizeof(RandomWeaponsIDs));

    //Pickup an der gefundenen Position erstellen
    CreatePickup(RandomWeaponsIDs[w], 19, tmp[r][0], tmp[r][1], tmp[r][2]);

    //Den gefundenen Ort aus dem tmp-Array entfernen, indem
    //alle nachfolgenden Orte eins nach vorne gezogen werden (=keine doppelten Orte)
    for(new j = r; j < count - 1; j++)
    {
    tmp[j][0] = tmp[j+1][0];
    tmp[j][1] = tmp[j+1][1];
    tmp[j][2] = tmp[j+1][2];
    }
    count--;
    }
    return 1;
    }


    Der Aufruf:
    DropWeapon(5);


    Das würde dann 5 von den 10 Plätzen mit jeweils einer zufälligen Waffe ausstatten.

  • hallo, habe ne kurze Frage und zwar frag ich mich ob diese Abfrage richtig ist, einen String bzw Integer mit nem Enum zu vergleichen...


    Code
    for(new i = 0; i < sizeof(AkteInfo); i++)
    {
    	new gesuchtid = strval(inputtext);
    	new name[MAX_PLAYER_NAME];
    	GetPlayerName(gesuchtid, name, sizeof(name));
    	if(AkteInfo[i][akte_name] == name)
    	{
    		/* etc... */
    	}
    }


    error 033: array must be indexed (variable "name")


    Habe sogar statt == mit && getauscht, aber warum bekomme ich da einen Fehler:
    (in dieser Zeile ) :


    Code
    if(AkteInfo[i][akte_name] == name)
  • new gesuchtid = strval(inputtext);
    new name[MAX_PLAYER_NAME];
    GetPlayerName(gesuchtid, name, sizeof(name));
    for(new i = 0; i < sizeof(AkteInfo); i++)
    {
    if(!strcmp(AkteInfo[i][akte_name],name))
    {
    /* etc... */
    }
    }


    Zum Vergleichen von Strings muss man strcmp nutzen (gibt 0 zurück wenn beide gleich sind).
    Setze außerdem Werte die immer gleich sind, bei jedem Schleifendurchlauf, außerhalb der Schleife hin.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Beitrag von German_ScripterHD ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Jeffry war schneller :P ().
  • ah okey, dank dir @Jeffry, dann ändere ich mal das sofort um die anderen Funktionen, habe dann irgendwie einen langen umweg gemacht :D


    Ähm zum darübergeposteten Beitrag bekomm ich mehr Errors:

    Code
    error 029: invalid expression, assumed zero
    error 029: invalid expression, assumed zero
    error 029: invalid expression, assumed zero
    fatal error 107: too many error messages on one line


    Code:


    Ähm entweder war ich zu blöd um das richtig einzufügen oder habe was falsch gemacht...

  • Das kompiliert bei mir problemlos so.
    Der Fehler muss woanders liegen, wahrscheinlich drüber irgendwo.


    Jap mein Fehler, sry trz dank dir für deine Hilfe :)


    Du @Jeffry, hab ne Frage und zwar funktioniert das nun einwandfrei mit der Prüfung ob der Spieler das auch ist, nur es werden falsche Werte ausgegeben...

    Habe 2 User in dieser Tabelle und mir wird der 1. Grund vom ersten User angezeigt und nicht was bei mir steht.
    Was habe ich denn Falsch gemacht? Bin bezüglich solcher Abfragen meist verwirrt woher er weiß welche Daten er wem zuweist...


    Könntest du mir weiterhelfen?