Beiträge von Jimmy93432

    Abend, ich hab ein Tram script gefunden, das einsteigen und aussteigen als Beifahrer geht ohne Probleme, als Fahrer leider nur das einsteigen und Fahrern,
    beim aussteigen wird die Kamera nicht zurückgesetzt. Doch Warum ist das so?


    public keys(playerid) {
    new lKeys, Mike1, Mike2;
    new Float:px,Float:py,Float:pz;
    new Float:cx,Float:cy,Float:cz;


    for(new i = 0; i < SLOTS; i++) {
    if(IsPlayerConnected(i)) {
    GetPlayerPos(i,px,py,pz);
    for(new j = 0; j < MAX_VEHICLES; j++) {
    if(GetVehicleModel(j) == 449) {
    GetVehiclePos(j,cx,cy,cz);
    if( floatsqroot( floatpower(px-cx,2.0) + floatpower(py-cy,2.0) + floatpower(pz-cz,2.0)) < 3.0) {
    GetPlayerKeys(i, lKeys, Mike1, Mike2);


    if (lKeys & KEY_SECONDARY_ATTACK)
    {
    if(IsPlayerInVehicle(playerid,449))
    {
    SetCameraBehindPlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    PutPlayerInVehicle(i, j, 0);
    }
    }
    }
    }
    }
    }
    }
    }

    Abend,
    nach dem ich eine gmx auslöse sollen die accounts nochmal alle gespeichert werden das geht auch, bis auf der level das wird auf 0 zurückgesetzt. Warum?


    ocmd:gmx(playerid,params[]){for (new i = 0; i < MAX_PLAYERS; i++) {SendClientMessage(i,COLOR_GREEN,"PayDay + 5000$!");SendClientMessage(i,COLOR_REDD,"Server is restarted, all accounts are stored");GivePlayerMoney(i, 5000);SetPlayerLevel(i, GetPlayerLevel(i)+1);
    // Spieler Speichernif(IsPlayerNPC(playerid))return 1;new pname[MAX_PLAYERS],accFormat[128];GetPlayerName(playerid,pname,sizeof pname);format(accFormat,sizeof accFormat,"acc/%s.sav",pname);if(fexist(accFormat) && Player[playerid][eingeloggt]){dini_IntSet(accFormat,"Adminlvl",Player[playerid][admin]);dini_IntSet(accFormat,"Shop",Player[playerid][shop]);dini_IntSet(accFormat,"lvl",GetPlayerLevel(playerid)); das wird nicht gespeichert sondern auf 0 zurückgesetzt bei allendini_IntSet(accFormat,"Kills",Player[playerid][Kills]);dini_IntSet(accFormat,"Deaths",Player[playerid][Deaths]);dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));}SetTimer("gmx", 4000, false);}return 1;}



    public gmx(playerid){SendRconCommand("gmx");return 1;}



    PWN geht nicht:



    ocmd:gmx(playerid,params[])
    {
    for (new i = 0; i < MAX_PLAYERS; i++) {
    SendClientMessage(i,COLOR_GREEN,"PayDay + 5000$!");
    SendClientMessage(i,COLOR_REDD,"Server is restarted, all accounts are stored");
    GivePlayerMoney(i, 5000);
    SetPlayerLevel(i, GetPlayerLevel(i)+1);


    // Spieler Speichern
    if(IsPlayerNPC(playerid))return 1;
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"acc/%s.sav",pname);
    if(fexist(accFormat) && Player[playerid][eingeloggt])
    {
    dini_IntSet(accFormat,"Adminlvl",Player[playerid][admin]);
    dini_IntSet(accFormat,"Shop",Player[playerid][shop]);
    dini_IntSet(accFormat,"lvl",GetPlayerLevel(playerid)); //das wird nicht gespeichert sondern auf 0 zurückgesetzt bei allen
    dini_IntSet(accFormat,"Kills",Player[playerid][Kills]);
    dini_IntSet(accFormat,"Deaths",Player[playerid][Deaths]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
    }
    SetTimer("gmx", 4000, false);
    }
    return 1;
    }



    public gmx(playerid)
    {
    SendRconCommand("gmx");
    return 1;
    }

    Abend, ich will gerade ein Kopfgeld System weiter ausbauen leider geht das nicht:


    ocmd:kg(playerid, params[]){ new Kopfgeld, pID; if(sscanf(params, "ud", pID, Kopfgeld)) return SendClientMessage(playerid, 0xFF004BFF, "Usage: /kg [ID/Name] [Betrag/Amount]"); new id; if(id == playerid)return SendClientMessage(playerid,COLOR_GREY,"Wrong ID"); //hier sollte geprüft werden ob es der spieler selbst ist if GetPlayerMoney(playerid) >= Kopfgeld //und hier ob er das geld besitzt, beides geht nicht *then if(GetPlayerMoney(playerid) <= Kopfgeld) { new str1[128]; SetPVarInt(pID, "AuftragSetted", GetPVarInt(pID, "AuftragSetted") +1); SetPVarInt(pID, "AuftragMoney", GetPVarInt(pID, "AuftragMoney") +Kopfgeld); format(str1, sizeof(str1), "[Kopfgeldsystem] Es wurde $%d auf %s ausgesetzt, Gesamt: $%d!", Kopfgeld, GetPlayerNameEx(pID), GetPVarInt(pID, "AuftragMoney")); SendClientMessageToAll(0xFFF000FF, str1); GivePlayerMoney(playerid, -Kopfgeld); } else return SendClientMessage(playerid, 0xFF004BFF, "Du hast nicht genug Geld"); return 1;}


    PWN geht nur fehlerhaft:


    ocmd:kg(playerid, params[])
    {
    new Kopfgeld, pID;
    if(sscanf(params, "ud", pID, Kopfgeld))
    return SendClientMessage(playerid, 0xFF004BFF, "Usage: /kg [ID/Name] [Betrag/Amount]");
    new id;
    if(id == playerid)return SendClientMessage(playerid,COLOR_GREY,"Wrong ID"); //hier sollte geprüft werden ob es der spieler selbst ist
    if GetPlayerMoney(playerid) >= Kopfgeld //hier ob er das geld besitzt
    *then
    if(GetPlayerMoney(playerid) <= Kopfgeld)
    {
    new str1[128];
    SetPVarInt(pID, "AuftragSetted", GetPVarInt(pID, "AuftragSetted") +1);
    SetPVarInt(pID, "AuftragMoney", GetPVarInt(pID, "AuftragMoney") +Kopfgeld);
    format(str1, sizeof(str1), "[Kopfgeldsystem] Es wurde $%d auf %s ausgesetzt, Gesamt: $%d!", Kopfgeld, GetPlayerNameEx(pID), GetPVarInt(pID, "AuftragMoney"));
    SendClientMessageToAll(0xFFF000FF, str1);
    GivePlayerMoney(playerid, -Kopfgeld);
    }
    else
    return SendClientMessage(playerid, 0xFF004BFF, "Du hast nicht genug Geld");
    return 1;
    }
    Ich habe irgendetwas falsch gemacht...

    Leider sind wir ja noch nicht zu einer richtigen Lösung gekommen. Habe jetzt nochmal was gefunden wo Prüft wie schnell er hintereinander kill, würde das gehen?


    new antifakekill[MAX_PLAYERS];


    public OnPlayerText(playerid, text[])
    {
    if(strfind(text,"!kill",true) == 0) return Kick(playerid);
    if(strfind(text,"Pixel",true) == 0) return Kick(playerid);



    return 1;
    }



    public OnPlayerDeath(playerid, killerid, reason)
    {
    antifakekill[playerid] ++;
    SetTimerEx("antifakekill2", 1000,false,"i",playerid);
    return 1;
    }



    forward antifakekill2(playerid);
    public antifakekill2(playerid)
    {
    antifakekill[playerid] --;
    if(antifakekill[playerid] > 5)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Du wurdest vom Server gekickt.");
    Kick(playerid);
    }
    return 1;
    }

    Fakekill heißt, dass zwar angezeigt wird, dass jemand gekillt wird, aber er in Wirklichkeit keinen Schaden bekommt.

    Leider erhöht sich aber der Score/Sein Geld ungemein, und der andere hat dann bei Death XXXX drinstehen :D
    Würde das effektiver sein einen Timer zu erstellen der Prüft wie oft er hintereinander killt? Oder könnte das auch umgangen werden?

    Abend, ich bin auf der suche nach dem effektivsten Anti fake kill Script, leider gibt es da so viele...
    Was würde am besten funktionieren? Ich habe das hier gefunden und schien mir so als würde es das beste sein:


    new Float:pHealthFake[MAX_PLAYERS];


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid != INVALID_PLAYER_ID)
    {
    if(Spieler[killerid][AdminLevel] == 0)
    {
    if(GetPlayerWeapon(killerid)!=reason)
    {
    GetPlayerHealth(playerid,pHealthFake[playerid]);
    if(pHealthFake[playerid]>0)
    {
    Kick(playerid);
    }
    }
    }
    }
    return 1;
    }


    Würde sowas gehen?


    (PWN Code ging nicht)

    Es geht leider beides nicht, jetzt passiert nichts mehr :(


    An was liegt das?


    public NDMZoneCheck(playerid){for (new i = 0; i < MAX_PLAYERS; i++){if(IsPlayerInArea(i,135.8763,-6681.1318,2135.6960,-3563.6587)){new vehicleid = GetPlayerVehicleID(playerid);SetPlayerArmedWeapon(playerid,0);TextDrawShowForPlayer(i,NODM);switch(vehicleid){ case 425, 432, 476, 520: { SetVehicleHealth(vehicleid,0); }}}else{TextDrawHideForPlayer(i,NODM);}}return 1;}



    public NDMZoneCheck(playerid)
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInArea(i,135.8763,-6681.1318,2135.6960,-3563.6587))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    SetPlayerArmedWeapon(playerid,0);
    TextDrawShowForPlayer(i,NODM);
    switch(vehicleid) // oder switch(GetPlayerVehicleID(i))
    {
    case 425, 432, 476, 520:
    {
    SetVehicleHealth(vehicleid,0);
    }
    }
    }
    else
    {
    TextDrawHideForPlayer(i,NODM);
    }
    }
    return 1;
    }

    Morgen, ich habe eine No-DM Zone gemacht die ohne Probleme geht. Nun will ich das wenn Hydras ect. in die Zone fliegen zerstört werden, leider werden jetzt in meinem Script
    alle Fahrzeuge in diesem Bereich zerstört :(



    public NDMZoneCheck(playerid)
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInArea(i,135.8763,-6681.1318,2135.6960,-3563.6587))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    SetPlayerArmedWeapon(playerid,0);
    TextDrawShowForPlayer(i,NODM);
    if(vehicleid == 425 || 432 || 476 || 520) //Diese Car ID´s sollen verboten werden.
    {
    SetVehicleHealth(vehicleid,0);
    }
    }
    else
    {
    TextDrawHideForPlayer(i,NODM);
    }
    }
    return 1;
    }
    (PWN Code geht nicht)

    Abend, ich hab ein Shop System gemacht wo zuerst geprüft wird ob er sich schon mal im spiel geheilt hat, danach ob er das Geld besitzt oder nicht.
    Das geht alles nur es wird seltsamer weiße nicht die Bestätigung Nachricht das er es gekauft hat angezeigt warum?


    case 0 : { if(Player[playerid][shop] == 1){ ShowPlayerDialog(playerid,DIALOG_OTHER,DIALOG_STYLE_LIST,"Other","Heal 50% 1000$\nHeal 100% 1600$\nArmour 50% 1800$ \nArmour 100% 2500$","Kaufen","Back"); return SendClientMessage(playerid,COLOR_RED,"Du hast dich schonmal geheilt"); } if GetPlayerMoney(playerid) > 1000 *then { SendClientMessage(playerid,COLOR_GREEN,"You bought Heal 50% for 1000$"); new Float:life; GetPlayerHealth(playerid, life); new Float:live = (life + 50.0); SetPlayerHealth(playerid, live); GivePlayerMoney(playerid, -1000); Player[playerid][shop] = 1; ShowPlayerDialog(playerid,DIALOG_OTHER,DIALOG_STYLE_LIST,"Other","Heal 50% 1000$\nHeal 100% 1600$\nArmour 50% 1800$ \nArmour 100% 2500$","Kaufen","Back"); } else { SendClientMessage(playerid,COLOR_RED, "You haven`t got enough money!"); TogglePlayerControllable(playerid, 1); ShowPlayerDialog(playerid,DIALOG_OTHER,DIALOG_STYLE_LIST,"Other","Heal 50% 1000$\nHeal 100% 1600$\nArmour 50% 1800$ \nArmour 100% 2500$","Kaufen","Back"); return 1; } }

    Abend, ich habe zurzeit ein Problem...Es geht nicht um spawnkiller die Beim Spawn Punkt stehen sondern iergentwo auf der Map, nicht am Opfer.
    Dann läuft das plötzlich durch, jeder wird immer wieder gekillt. Manchmal auch ohne ein Töter (wird wie ein normal Tot angezeigt) Das ganze kann aber auch auf ein anderen Spieler geschoben werden, der hat dann ruck zuck nen Score von 6000. Solche art von Cheat habe ich bisher noch nicht gesehen wo so extrem das Spiel beeinflusst.
    Kennt jemand diese art? Und weiß wie man dagegen vorgeht?

    Abend, in meinem Changepass dialog geht die funktion prima, nur der "if(response==0)" button hat fehler die ich nicht erklären kann.


    Wenn man diesen drückt (Close) sollte normal ein bestätigung Dialog kommen, stadesen öffnet sich ein komplett andere (DIALOG_SHOP) Sie haben nicht die selbe ID


    #define DIALOG_SHOP 40
    #define DIALOG_CHANGEPASS3 54


    Ich mache da schon zeit Wochen drann rum und kann es mir nicht erklären, daher benötige ich dringend eure Hilfe, Danke.



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {


    if(dialogid==DIALOG_SHOP)
    {
    if(response==1)
    {
    switch(listitem)
    {
    case 0 : //Waffen Dialog englisch
    {
    ShowPlayerDialog(playerid,DIALOG_WEAPONTS,DIALOG_STYLE_LIST,"Weaponts","X","More","Back");
    }
    case 1 : //Equipment englisch
    {
    ShowPlayerDialog(playerid,DIALOG_EQUIPMENT,DIALOG_STYLE_LIST,"Equipment","X","Kaufen","Back");
    }
    case 2 : //Other / Armour englisch
    {
    ShowPlayerDialog(playerid,DIALOG_OTHER,DIALOG_STYLE_LIST,"Other","X","Kaufen","Back");
    }
    }
    }
    return 1;
    }


    if(dialogid==DIALOG_CHANGEPASS)
    {
    if(response==0)
    {
    new string[1000];
    format(string, sizeof(string),"Vorgang abgebrochen!{FFFFFF} || {FF0000}Process uncompleted!");
    ShowPlayerDialog(playerid, DIALOG_CHANGEPASS3, DIALOG_STYLE_MSGBOX, "{FFFFFF}Channel",string, "Yes", ""); //Hier öffnet er immer DIALOG_SHOP Warum?!
    }
    if(response==1)
    {
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"acc/%s.sav",pname);
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_CHANGEPASS,DIALOG_STYLE_PASSWORD,"{FFFFFF}Changepass","Ihr neues Passwort: {FFFFFF} || {FF0000}Their new password:","Enter","Close");
    return SendClientMessage(playerid,COLOR_LIGHTBLUE,"Kein Passwort eingegeben! {FFFFFF} || {FF0000}No password given!");
    }
    dini_Create(accFormat);
    dini_Set(accFormat,"Passwort",inputtext);
    new string[1000];
    format(string, sizeof(string),"Passwort geändert! {FFFFFF} || {FF0000}Password changed!");
    ShowPlayerDialog(playerid, DIALOG_CHANGEPASS2, DIALOG_STYLE_MSGBOX, "{FFFFFF}OK",string, "Thanks", ""); //Botton 1 geht immer ohne Probleme
    }
    return 1;
    }
    return 0;
    }