Prüfen ob Spieler eine Waffen trägt

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
  • Hi, sry hab SuFu benutzt aber nichts gefunden.


    Wie oder womit kann ich prüfen ob playerid eine Waffe bei sich trägt, am besten wäre natürlich noch mit den Namen (m4, mp5..).
    Habe im Wiki nach Getplayerweapon und GetPlayerWeaponData geguckt aber so richtig erklärt ist es da auch nicht. Und im Breadfish wiki hab ich es eerst garnicht gefunden.



    PS. die Waffennamen habe ich schon.

  • Kein Plan aber da swürde mich mci hauch mal sau interessieren -.-^^

  • dcmd_haveweapons(playerid,baumhaus[]) {
    #pragma unused baumhaus
    new weapons[13];
    new empty;
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapons[i][0], empty);
    }
    for (i = 0;i == 13;i++) {
    if(weapons[i] > 1) {
    SendClientMessage(playerid,0xFFFFFFFF,"Du trägst Waffen");
    return 1;
    }
    }
    SendClientMessage(playerid,0xFFFFFFFF,"Du trägst keine Waffen");
    return 1;
    }


    Ungetestet , Experimentell und komisch . Die Funktion gibt nur zurück ob der Spieler überhaupt eine Waffe trägt evtl. mit GetWeaponName ergänzen.

    MrX
    - Nichtmehr bei SA:MP aktiv -

  • also GetPlayerWeaponData prüft ob playerid irgendeine Waffe bei sich trögt, ok Danke


    Und mit GetPlayerWeapon kann ich scripten das die Waffen gespeichert werden?



    also so ungefähr:


    new waffe = GetPlayerWeapon(playerid);


    Aber speichert er dann alle Waffen die er bei sicht trägt oder nur die die er gerade zeigt?


    *Edit: Achja, die gleiche Frage gilt auch noch mal von GetPlayerWeaponData




    **Edit:

    Godfather???


    Spielt das denn eine Rolle? Abgesehen davon sind wir nicht im Godfather Bereich ;)

  • if (strcmp(cmdtext, "/rob", true)==0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsACop(playerid))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "You are a Cop !");
    }
    else if(PlayerToPoint(6.0,playerid,2305.4304,-16.1198,26.749))
    {
    if(robable==0)
    {
    new weapons[13][2];
    new empty;
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapons[i][0], empty);
    if(weapons[i] > 1)
    {
    SendClientMessage(playerid, COLOR_GRAD2, "You have a weapon");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "This Bank is allready robbed");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "You are not in a Bank");
    }
    }
    }


    so wollte ich nen CMD machen nur es gib 1 Error:


    Zitat

    D:\Caff Server\gamemodes\gf.pwn(16243) : error 033: array must be indexed (variable "weapons")


    das ist die Zeile:
    if(weapons[i] > 1)


    Kann mir einer sagen wie ich den error weg bekomme???

  • new
    weapon,
    ammo;
    for(new slot = 0; slot < 15; slot++)
    {
    GetPlayerWeaponData(playerid, slot, weapon, ammo);
    if(weapon > 0 && weapon < 47 && ammo > 0)
    {
    // Er hat mindestens eine Waffe (Waffenid = "weapon", Munition = "ammo")
    }
    }
    Du brauchst doch keine Array, um herauszufinden, ob er eine Waffe trägt. Da reicht ein einfacher Integer

  • GetPlayerWeapon(playerid, Waffend id);
    if(GetPlayerWeapon(playerid) ==21)
    {
    SendClientMessage(playerid, COLOR_GRAD2,"You have a weapon (weaponid: 21) !");
    return 1;
    }

  • GetPlayerWeaponData


    ist einer von vielen Funktionen die in Sa-mp nicht funktionieren, wobei man sich dafür eigentlich ne eigene Funktion bauen könnte


    http://wiki.sa-mp.com/wiki/Bugs#Scripting_Bugs



    if(GetPlayerWeapon(playerid) ==21)
    {
    SendClientMessage(playerid, COLOR_GRAD2,"You have a weapon (weaponid: 21) !");
    return 1;
    }


    Nja das dann für alle Funktionen umzubauen wäre umständlich


    if(strcmp(cmd,"/checkguns",true)==0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /checkweapons [ID]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    new weapons[13][2];
    new stringw[128];
    new weaponname[64];
    new hasweapon;
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(giveplayerid, i, weapons[i][0], weapons[i][1]);
    if(weapons[i][0] && weapons[i][1])
    {
    hasweapon = 1;
    switch(weapons[i][0])
    {
    case 1:{weaponname = "Schlagring";}
    case 2:{weaponname = "Golfschläger";}
    case 3:{weaponname = "Schlagstock";}
    case 4:{weaponname = "Messer";}
    case 5:{weaponname = "Basketballschläger";}
    case 6:{weaponname = "Schaufel";}
    case 7:{weaponname = "Billardkö";}
    case 8:{weaponname = "Katana";}
    case 9:{weaponname = "Kettensäge";}
    case 10:{weaponname = "Dildo/Vibrator";}
    case 11:{weaponname = "Dildo/Vibrator";}
    case 12:{weaponname = "Dildo/Vibrator";}
    case 13:{weaponname = "Dildo/Vibrator";}
    case 14:{weaponname = "Blumen";}
    case 15:{weaponname = "Eisenstange";}
    case 16:{weaponname = "Granate";}
    case 17:{weaponname = "Tränengaß";}
    case 18:{weaponname = "Molotov";}
    case 22:{weaponname = "Pistole";}
    case 23:{weaponname = "Schallgedämpfte Pistole";}
    case 24:{weaponname = "Desert Eagle";}
    case 25:{weaponname = "Schrotflinte";}
    case 26:{weaponname = "Abgesägte Schrotflinte";}
    case 27:{weaponname = "Moderne Schrotflinte";}
    case 28:{weaponname = "Mirco SMG (Mac10)";}
    case 29:{weaponname = "SMG (MP5)";}
    case 30:{weaponname = "AK47";}
    case 31:{weaponname = "M4";}
    case 32:{weaponname = "Tec9";}
    case 33:{weaponname = "Gewehr";}
    case 34:{weaponname = "Sniper-Gewehr";}
    case 35:{weaponname = "Raketenwerfer";}
    case 37:{weaponname = "Flammenwerfer";}
    case 38:{weaponname = "Minigun";}
    case 41:{weaponname = "Sprühdose";}
    }
    format(stringw, sizeof(stringw), "Waffen: %s | Munition: %d", weaponname, weapons[i][1]);
    SendClientMessage(playerid, COLOR_DBLUE, stringw);
    }
    }
    if(!hasweapon)
    {
    SendClientMessage(playerid, COLOR_DBLUE, "Der Spieler hat keine Waffen.");
    }
    }
    return 1;
    }


    Man muss - leider - alle Waffenid´s manuel eingeben, so sollte es funktionieren

    [align=center]
    Mta Script Editor - Work in Progress

  • Es gibt da aber auch eine nette Funktion names "GetWeaponName"
    if(strcmp(cmdtext,"/meinewaffe",true)==0) {
    new s[128], name[24], wid, muni, gla;
    for(new i=1; i<=12; i++) {
    GetPlayerWeaponData(playerid,i,wid,muni);
    if(wid!=0) {
    GetWeaponName(wid,name,sizeof(name));
    gla++;
    if(gla>=2 && strlen(s)>=100) {
    gla=1;
    SendClientMessage(playerid,FARBE,s); }
    if(gla==1) {
    format(s,sizeof(s),"%s: %d",name,muni); }
    else if(gla>=2) {
    format(s,sizeof(s),"%s, %s: %d",s,name,muni); }}}
    SendClientMessage(playerid,FARBE,s);
    return 1;
    }