Beiträge von JustMe.77

    Hi, habe 3 Checkpoints auf einer selbst gemappten Map erstellt, nur habe ich eben folgendes lesen dürfen:



    "Known Bug: Checkpoints created on server-created objects (CreateObject/CreatePlayerObject) will appear down on the 'real' ground, but will still function correctly. There is no fix available for this issue. A pickup can be used instead."


    Kann man mit PickUps Checkpoints erstellen? Falls ja, welche ID denn?

    Das wird ihn bei seinem Problem nicht helfen..
    Einfach deine Befehle in zcmd umschreiben, Beispiel:




    CMD:test(playerid,params[])
    {
    new Float:x, Float:y, Flaot:z;
    GetPlayerPos(playerid, x,y,z);
    FCNPC_Spawn(1, 367, x, y, z);
    return 1;
    }

    ZCMD sorgt, soweit ich weiß dafür das Befehle die in OnPlayerCommandText Public drin sind, ignoriert werden.
    Müsstest also entweder ZCMD rausmachen oder alle Befehle umschreiben in ZCMD (empfehle letzteres)

    Hey, wie müsste ich vorgehen wenn ich allen registrierten Accounts etwas bestimmtes geben möchte, z.B. EXP?
    (System ist auf MySQL basiert)


    Wenn z.B. mein EXP Befehl so ausschaut:



    CMD:givexp(playerid, params[]){
    new pid, pEXP, cQuery[128];



    if(!CheckAccesName(playerid)) return
    SendClientMessage(playerid, COLOR_RED, ACCES_Fail);



    if(sscanf(params, "ui", pid, pEXP)) return
    SendClientMessage(playerid, COLOR_RED, "Use: /givexp <player> <amount>");



    if(!IsPlayerConnected(pid)) return
    SendClientMessage(playerid, COLOR_RED, ID_Fail);



    if(!(0 < pEXP < 1001)) return
    SendClientMessage(playerid, COLOR_RED, "Min: 1 EXP - Max: 1000 EXP.");





    format(cQuery, sizeof(cQuery), "You gave to {%06x}%s(%d) {FF0000}%d {FFFFFF}XP", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetName(pid), pEXP);
    SendClientMessage(playerid, -1, cQuery);



    format(cQuery, sizeof(cQuery), "Admin %s gave %s %d XP", GetName(playerid), GetName(pid), pEXP);
    writeLog("Logs/GiveXP.txt", cQuery);



    GivePlayerExp(pid, pEXP);
    return 1;
    }

    Ne, der Befehl soll auch nicht verfügbar sein während man Fahrer/Beifahrer ist, trotzdem danke :)



    Edit:


    Habe ein weiteres kleines Problem, hoffe ihr könnt mir behilflich sein. Mit folgendem Befehl gebe ich Spielern eine bestimmte Waffe, benutze ich anstatt den Waffen Namen die ID (beispielsweise 24), taucht folgendes in der ServerLog auf.




    CMD:givegun(playerid, params[]) {
    new playerID, gun[24], cQuery[144];



    if(pData[playerid][P_Admin] < 5) return
    SendClientMessage(playerid, COLOR_RED, LV_Fail);




    if(sscanf(params,"us[24]", playerID, gun)) return
    SendClientMessage(playerid, COLOR_RED, "Use: /givegun <player> <weapon name>");



    GivePlayerWeapon(playerID, GetWeaponIdByName(gun), 999);
    new weapname = GetWeaponIdByName(gun);



    if(IsSilent[playerid] == false) {
    format(cQuery, sizeof(cQuery), "{%06x}%s gave you a weapon (%s)", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetWeaponNameById(weapname));
    SendClientMessage(playerID, -1, cQuery);
    }
    return 1;
    }

    Hallo, habe folgendes Problem. Egal ob der Spieler gespawnt ist oder nicht, die Nachricht das er nicht gespawnt ist erscheint immer.



    CMD:duel(playerid, params[]) {
    new weapid1, weapid2;



    if(GetPlayerState(playerid) != PLAYER_STATE_SPAWNED)
    {
    SendClientMessage(playerid, COLOR_RED, "You need to spawn first!");
    return 1;
    }





    if(Round[r_iniciando] == true) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
    if(sscanf(params, "ii", weapid1, weapid2)) return SendClientMessage(playerid, COLOR_RED, "Use: /duel <gun id 1> <gun id 2>");
    if(weapid1 < 22 || weapid1 > 34 || weapid2 < 22 || weapid2 > 34) return SendClientMessage(playerid, COLOR_RED, "Invalid weapon ID.");
    if(InDuel[playerid] == true) return SendClientMessage(playerid, COLOR_RED, "You're already in a duel!");
    if(Duel[playerid] != 998) return SendClientMessage(playerid, COLOR_RED, "You're already in a duel!");
    if(CreatedDuel[playerid] == 1) return SendClientMessage(playerid, COLOR_RED, "You already created a duel, type /cancelduel to leave it.");



    CreatedDuel[playerid] = 1;
    Duel[playerid] = 999;



    DuelWeapons[playerid][0] = weapid1;
    DuelWeapons[playerid][1] = weapid2;



    new dQuery[144];
    format(dQuery, sizeof(dQuery), "{FF0000}(DUEL) {%06x}%s {FFFFFF}has created a duel (%s and %s) type {FF0000}/acceptduel %d", GetPlayerColor(playerid) >>> 8, GetName(playerid), GetWeaponNameEx(weapid1), GetWeaponNameEx(weapid2), playerid);
    SendClientMessageToAll(COLOR_RED, dQuery);




    return 1;
    }


    Was habe ich falsch gemacht?

    Hi, ich hab mal eine Frage.


    Ich lasse per FilterScript einen Spieler bannen, möchte dann aber Funktionen welche im Gamemode vorhanden sind, benutzen.
    Geht das mit CallRemoteFuntion und wenn ja, wie?


    Beispiel:


    Im FilterScript wird man für Waffen Hacks gebannt, dabei soll das vom Gamemode verwendet werden bzw. eingetragen werden:


    pData[playerID][P_Banned] = 1;


    (Ganzer Ban Befeh im Gamemodel)


    @Jeffry


    Danke erstmal, nur habe ich ein kleines Problem.


    Sobald ich alles starte, wird mir "Unknown Command" angezeigt, Event wird trotzdem gestartet nur werden keine PickUps erstellt.


    So schaut der Befehl aktuell aus.



    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);
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    DestroyDynamicPickup(eventweapon[i]);
    }
    DropWeapon(10);
    return 1;



    }

    Hallo, ich möchte Spieler die PickUps aufheben bestimmte Waffen geben, aber wie frage ich ab welche Model ID aufgehoben wurde damit ich die entsprechende Waffe geben kann?


    So werden die PickUps erstellt



    new RandomWeaponsIDs[] =
    {
    346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 357, 358, 365, 372, 341, 335
    };




    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
    eventweapon[i] = CreateDynamicPickup(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;
    }


    Und so werden sie aufgehoben



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(eventweapon[i] == pickupid) {
    //Wie mit GivePlayerWeapon abfragen welches Pickup Model aufgehoben wurde um die entsprechende Waffe zu geben?
    DestroyPickup(eventweapon[i]);
    eventweapon[i] = -1;



    return 1;
    }
    }
    return 1;
    }

    @Jeffry


    Funktioniert klasse. Möchte jetzt den Spieler eine Waffe geben sobald er das PickUp aufnimmt.


    Könnte das jetzt per OnPlayerPickUpPickUp machen, aber habe folgendes gelesen nur scheint das nicht zu klappen:


    "Certain pickup types come with 'automatic responses', for example using an M4 model in the pickup will automatically give the player the weapon and some ammo. For fully scripted pickups, type 1 should be used."


    Erhalte nicht automatisch eine Waffe/Munition, weiß nicht woran das liegt. Also müsste ich das denke ich per Public selber lösen, aber wie überprüfe ich welches Pickup Model der Spieler aufgehoben hat sodass ich ihn die entsprechende Waffe geben kann?


    Mein Public schaut aktuell so aus:



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(eventweapon[i] == pickupid) {
    //Hier eventuell waffen geben...
    DestroyPickup(eventweapon[i]);
    eventweapon[i] = -1;



    return 1;
    }
    }
    return 1;
    }