Beiträge von Simon

    Guten Tag


    Ich habe mehrere Hotels und somit auch mehrere Hotelzimmer. der besitzer des Hotels kann sein Hotel ganz einfach über dialogen verwalten.
    Nun soll es auch eine Allgemeine Info für das Hotel geben wo drinne steht:
    Hotel:
    Kasse:
    Mietpreis:
    Belegte Zimmer:


    Hotelzimmer:
    //hier alle hotelzimmer aufgelistet (je nach hotel verschiedend)


    da alles zusammen ziemlich groß ist und jedes Hotel eine andere Anzahl von Hotelzimmern habe, habe ich es mal so so gelöst:


    if(dialogid == Dialog_Hotel) // Hotel dialog
    {
    if(response)
    {
    if(listitem == 0) // 0 == Hotel info
    {
    for(new i = 0; i < sizeof Hotels; i++) // geht alle Hotels durch
    {
    if(IsPlayerInRangeOfPoint(playerid,2.5,Hotels[i][hpx],Hotels[i][hpy],Hotels[i][hpz])) //überprüft, an welchem hotel er steht
    {
    new str[1700];
    new sBug[1500];
    sBug[0] = '\0';
    for(new j = 0; j < sizeof pHotelzimmer; j++) // geht alle hotelzimmer durch
    {
    if(!strcmp(pHotelzimmer[j][HName2],Hotels[i][HName],true)) //überprüft welches Hotelzimmer zum Hotel gehört
    {
    new str2[300], Bizdatei[100];
    format(Bizdatei,sizeof(Bizdatei),"/Hotelzimmer/%s %s",Hotels[i][HName],pHotelzimmer[j][ZName]);
    if(!strcmp(dini_Get(Bizdatei,"Mietername"),"Keiner",true)) // falls keiner das Zimmer Mietet
    {
    format(str2,sizeof(str2),"%s Mieter: Keiner",pHotelzimmer[j][ZName]);
    }
    else // falls einer das Zimmer Mietet
    {
    format(str2,sizeof(str2),"%s Mieter: %s Lastlogin: %d.%d %d:%d",pHotelzimmer[j][ZName],dini_Get(Bizdatei,"Mietername"), pHotelzimmer[i][Mieterlogday], pHotelzimmer[i][Mieterlogmonth], pHotelzimmer[i][Mieterloghour], pHotelzimmer[i][Mieterlogminute]);
    }
    format(sBug,sizeof(sBug),"%s%s\n",sBug,str2); // hier werden alle strings der hotelzimmer zusammengepackt
    }
    }
    format(str,sizeof(str),"Hotel: %s\nKasse: $%d\nBelegte Zimmer: %d / %d\nMietpreis: $%d\n\nHotelzimmer:\n%s",Hotels[i][HName],Hotels[i][Kasse],Hotels[i][Mieter],Hotels[i][Zimmer],Hotels[i][Mietpreis],sBug);
    ShowPlayerDialog(playerid,Dialog_Hotel_Info,DIALOG_STYLE_MSGBOX,"Hotel - Info",str,"Verwaltung","");
    }
    }
    }
    }
    }


    Das Problem ist nun, das mir, wenn ich die Strings verkleinere nur die Hälfte vom Text im Dialog angezeigt wird bzw. wenn ich die Strings vergrößere erst gar kein Dialog kommt und anschließende Commands funktionieren auch nicht.


    Wäre sehr nett wenn mir jemand bei diesem Problem helfen könnte.


    Mfg
    Simon


    //edit: klappt alles

    Guten Tag


    Ich habe einen Zugbot hinzugefüft mithelilfe vom Tutorial.


    Nun joint dieser auch. Sobald man sich registriert, soll man für ein paar sekunden den Bot beobachten, danach beginnt das tutorial.
    Jedoch disconnected der Bot kurznachdem ich connecte..


    Hier ma alles was mit dem Bot zu tuhen hat:


    OnGameModeInit()
    {
    /*~~~Bots:~~~*/
    ConnectNPC("Intro","Intro"); //Zug-Noob-Bot
    Botcar[0] = AddStaticVehicle(538,1700.7551,-1953.6531,14.8756,200.0,-1,-1); // zug
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(Botcar[0], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Botcar[0],1,1,alarm,doors,bonnet,boot,objective);
    SetVehicleVirtualWorld(Botcar[0],1);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    SetPlayerColor(playerid,0xFFFFFF00);
    TextDrawShowForPlayer(playerid,komma);
    TogglePlayerControllable(playerid,1);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerSkin(playerid,Spieler[playerid][Skin]);
    if(pregister[playerid] == 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(i, botname, sizeof(botname));
    if(!strcmp(botname, "Intro", true))
    {
    tv[playerid][i] = 1;
    PlayerSpectateVehicle(playerid,Botcar[0]);
    TogglePlayerSpectating(playerid,1);
    tuttimer[playerid] = SetTimerEx("tutorial",10000,0,"i",playerid);
    }
    }
    }
    }
    else
    {
    SetPlayerSpawn(playerid);
    }
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "Intro", true))
    {
    SetPlayerSkin(playerid,0);
    SetPlayerVirtualWorld(playerid,1);
    PutPlayerInVehicle(playerid, Botcar[0], 0);
    }
    }
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    if(!IsPlayerNPC(playerid))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(registriert[playerid] == 1)
    {
    new str[100];
    format(str,sizeof(str),"Guten Tag %s,\n\nIhr Account wurde wiedererkannt.\nLoggen Sie sich mit ihr Passwort ein!",name);
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"Login",str,"Okay","Cancel");
    }
    else
    {
    new str[100];
    format(str,sizeof(str),"Guten Tag %s,\n\nSie besitzen noch kein Account.\nRegistrieren Sie sich mit einem Passwort!",name);
    ShowPlayerDialog(playerid,Dialog_Regis,DIALOG_STYLE_INPUT,"Login",str,"Okay","Cancel");
    }
    }
    else
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "Intro", true))
    {
    SpawnPlayer(playerid);
    }
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    SetPlayerColor(playerid,0xFFFFFF00);
    new name[MAX_PLAYER_NAME], Spielerdatei[50];
    GetPlayerName(playerid,name,sizeof(name));
    if(!IsPlayerNPC(playerid))
    {
    format(Spielerdatei,sizeof(Spielerdatei),"/Users/%s.ini",name);
    if(dini_Exists(Spielerdatei))
    {
    registriert[playerid] = 1;
    }
    else
    {
    registriert[playerid] = 0;
    }
    falschespw[playerid] = 3;
    }
    else
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "Intro", true))
    {
    login[playerid] = 1;
    }
    }
    return 1;
    }


    public tutorial(playerid)
    {
    TogglePlayerSpectating(playerid,0);
    SetPlayerVirtualWorld(playerid,2);
    TogglePlayerControllable(playerid,0);
    SetPlayerCameraPos(playerid,-842.1766,-1387.2435,90.1723);
    SetPlayerCameraLookAt(playerid,-836.0152,-1389.2963,90.2541);
    SendClientMessage(playerid,0xFF5660FF,"[Tutorial] Wir benötigen noch ein Paar Informationen für ihr Personalausweis...");
    ShowPlayerDialog(playerid,Dialog_Zugbot,DIALOG_STYLE_LIST,"In Welcher Stadt möchtest du spawnen?","Los Santos\nSan Fierro\nLasVenturas","Okay","");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(i, botname, sizeof(botname));
    if(!strcmp(botname, "Intro", true))
    {
    tv[playerid][i] = 0;
    }
    }
    }
    return 1;
    }


    Ich hoffe ihr könnt mir da weiterhelfen


    Mfg
    Simon

    bin etwas verwirrt, willst du die IP haben oder die ID?


    ich denke mal du meinst die ID, habe hier mal den Command für dich, musst du dann halt anpassen wie du es haben möchtest:


    dcmd_id(playerid,params[])
    {
    new pID;
    if(sscanf(params, "u", pID))
    {
    return SendClientMessage(playerid,grau,"Benutzung: /id [Name/Id]");
    }
    if(!IsPlayerConnected(pID))
    {
    SendClientMessage(playerid,grau,"Spieler ist Offline!");
    }
    else
    {
    new name[MAX_PLAYER_NAME], str[100];
    GetPlayerName(pID,name,sizeof(name));
    format(str,sizeof(str),"** || Name: %s || Id: %d || **",name, pID);
    SendClientMessage(playerid,0xAFAFAFAF,str);
    }
    return 1;
    }

    Guten Tag


    Ich benutze den BFX Object Streamer. Bisher hatte ich eigentlich keinerlei Probleme und alles lief so wie es laufen sollte. Doch Nun habe ich auch die Objekte die sich bewegen zu einem Streamobject gemacht. Bewegen tuhen sie sich, doch sobald ich den Server per RconCmd("gmx") bzw. /rcon gmx restarte, sind die objekte doppelt. ein objekt, was immer auf der stelle bleibt und das 2. das sich bewegt.


    Ich lasse schon bei OnGameModeExit Alle StreamerObjekte zerstören und zusätzlich noch die Objekte die sich bewegen lassen.


    Ich muss den server erst ganz stoppen und dann wieder starten.


    Hier ma ein Tor:
    public OnGameModeInit()
    {
    tor[0] = b_CreateObject(980, 664.97369384766, -1309.0191650391, 15.234329223633, 0, 0, 0);
    return 1;
    }


    public OnPlayerCommandText(playerid,cmdtext[])
    {
    if(strcmp("/tor", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,35.0,664.97369384766, -1309.0191650391, 15.234329223633))
    {
    if(Spieler[playerid][Member] == 1 || Spieler[playerid][Leader] == 1 || IsACop(playerid))
    {
    if(torauf[0] == 0)
    {
    SendClientMessage(playerid,türkis,"Das Tor schließt sich automatisch!");
    b_MoveObject(tor[0],664.97369384766, -1309.0191650391, 8.7343292236328,5);
    torauf[0] = 1;
    t[0] = SetTimer("torzu1",6000,0);
    }
    else
    {
    SendClientMessage(playerid,türkis,"Das Tor wird geschlossen!");
    b_MoveObject(tor[0],664.97369384766, -1309.0191650391, 15.234329223633,5);
    torauf[0] = 0;
    KillTimer(t[0]);
    }
    }
    }
    }
    return 1;
    }


    public torzu1()
    {
    torauf[0] = 0;
    b_MoveObject(tor[0],664.97369384766, -1309.0191650391, 15.234329223633,5);
    return 1;
    }


    OnGameModeExit()
    {
    b_DestroyAllObjects();
    for(new i = 0; i < sizeof tor; i++)
    {
    b_DestroyObject(tor[i]);
    }
    return 1;
    }


    Wäre sehr nett wenn mir jemand helfen könnte.


    Mfg
    Simon

    Also ich denke mal, das alles soweit richtig ist, nur die Distanz falsch errechnet wird.


    ob er sich innerhalb 1-2 sekunden nun 30,40 oder 50m bewegen darf, muss man dann austesten. ein infernus ist schneller als ein roller und man muss dann halt schauen, ab wann es speedhack ist..

    Guten Tag, ich habe versucht mal ein eigenes anti Airbreake/speedhack system zu scripten.


    Dazu frage ich innerhalb 2 sekunden 2 mal die posi ab und errechne die distanz zwischen den posis. wenn die distanz höher als 50m ist, bekommen die Admins ne warnung.
    Sobald er mit einem Fahrzeug oder zu fuß über 550m ist ( Höchste punkt den man erreichen kann ~530 ) bekommen die Admins ebenfalls ne warnung. Wenn man in einem Flugobjekt sitzt und über 1000m kommt ( Höchstens ~960 zu schaffen) bekommen die Admins auch eine warnung.


    Das einzige was nicht klappt, ist das mit der Distanz. sobald ich in ein autosteige, kommen jede sekund warnungen rein, obwohl ich mich kein mm bewege.


    Hier ma scriptausschnitt:


    public check()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    //airbreake:
    new Float:px[3], Float:py[3], Float:pz[3];
    if(gestorben[i] == 0 && gespawnt[i] == 0 && teleport[i] == 0 && mapport[i] == 0 && geslappt[i] == 0)
    {
    if(GetPlayerInterior(i) == 0 && GetPlayerVirtualWorld(i) == 0)
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(Airbreakecheck[i] == 0)
    {
    GetPlayerPos(i,px[0],py[0],pz[0]);
    Airbreakecheck[i]++;
    }
    else if(Airbreakecheck[i] == 1)
    {
    GetPlayerPos(i,px[1],py[1],pz[1]);
    if(distanz(i,px[0],py[0],pz[0],px[1],py[1],pz[1]) >= 50)
    {
    //cheater[i]++;
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) steht unter Verdacht eines Airbreak/Speedhack-Hacks!",name,i);
    Bangrund[i] = "Speedhack";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    Airbreakcheck[i] = 0;
    }
    GetPlayerPos(i,px[2],py[2],pz[2]);
    if(pz[2] >= 1000)
    {
    //cheater[i]++;
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) steht unter Verdacht eines Airbreak/Speedhack-Hacks!",name,i);
    Bangrund[i] = "Speedhack";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    else if(pz[2] >= 550)
    {
    if(!IstImFlugobjekt(i))
    {
    //cheater[i]++;
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) steht unter Verdacht eines Airbreak/Speedhack-Hacks!",name,i);
    Bangrund[i] = "Speedhack";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    }
    }
    }
    }
    if(cheater[i] >= 5)
    {
    new bstr[125];
    format(bstr,sizeof(bstr),"%s wurde vom System gebannt, Grund: %s.",name,Bangrund[i]);
    SendClientMessageToAll(0xFF6347FF,bstr);
    Spieler[i][ban] = 1;
    Spieler[i][bangrund] = Bangrund[i];
    Kick(i);
    }
    }
    }
    }
    return 1;
    }


    Ob er in einem Flugzeug sitzt:
    public IstImFlugobjekt(playerid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);
    if(model == 417 || model == 425 || model == 447 || model == 460 || model == 469 || model == 476 || model == 487 || model == 488 || model == 497 || model == 511 || model == 512 || model == 513 || model == 519 || model == 520 || model == 548 || model == 553 || model == 563 || model == 577 || model == 592 || model == 593) return 1;
    return 0;
    }


    die distanz errechnen aus den 2 posis:
    stock distanz(playerid,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
    {
    new Float:dis;
    if (!IsPlayerConnected(playerid)) return -1;
    dis = floatsqroot(floatpower(floatabs(floatsub(x1,x2)),2)+floatpower(floatabs(floatsub(y1,y2)),2)+floatpower(floatabs(floatsub(z1,z2)),2));
    return floatround(dis);
    }


    Ich hoffe ihr könnt mir da weiterhelfen.


    MfG
    Simon

    Guten Tag.


    Ich habe soeben ein Textdraw hinzugefügt, was jede sekunde die velocity aktuallisiert. seid dem ich dieses textdraw eingebaut habe, kommt folgender error:



    Der server ist an, sobald jedoch der 1. connected, crasht er.


    Ich hoffe ihr könnt mir helfen, hier ma mein Textdraw:


    new Text:test[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    test[playerid] = TextDrawCreate(199.000000,376.000000,"");
    TextDrawHideForPlayer(playerid,test[playerid]);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    TextDrawDestroy(test[playerid]);
    return 1;
    }


    public OnPlayerCommandText(playerid,cmdtext[])
    {
    if(strcmp("/test", cmdtext, true, 10) == 0)
    {
    TextDrawShowForPlayer(playerid,test[playerid]);
    }
    return 1;
    }


    public check()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    // test:
    new Float:x, Float:y, Float:z, str[256];
    if(IsPlayerInAnyVehicle(i))
    {
    GetVehicleVelocity(GetPlayerVehicleID(i),x,y,z);
    format(str,sizeof(str),"Modus: Fahrzeug || X: %0.3f || Y: %0.3f || Z: %0.3f",x,y,z);
    }
    else
    {
    GetPlayerVelocity(i,x,y,z);
    format(str,sizeof(str),"Modus: Fußgänger || X: %0.3f || Y: %0.3f || Z: %0.3f",x,y,z);
    }
    TextDrawSetString(test[i],str);
    }
    }
    return 1;
    }


    Ich hoffe ihjr könnt mir weiterhelfen


    Mfg
    Simon

    Guten Tag.


    Ich habe mal ein Anti health und anti armour cheat versucht zu scripten.


    Immer wenn die HP im script geändert wird, wird nicht nur die aktuelle hp, sondern auch die differenz zwischen alte und neue hp serverside gespeichert.
    in einem sekundentimer wird nun überprüft ob das aktuelle geld mit dem wert, der serverside gespeichert wird übereinstimmt. wenn die hp höher ist, wird übeprüft ob er kurz vorher etwas gegessen hat, per sich gehealt hat oder ob die gecheatete hp mit der differenz übereinstimmt. Wenn mindestens eines der 3 sachen erkannt wird, wird es als Lag erkannt. ansonsten wird es als cheat erkannt. wenn die aktuelle hp geringer als der Wert ist, wird die aktuelle hp serverside gespeichert.
    Das selbe gilt auch fürs anti Armour script.


    Nun kommen sehr öft Fehlmeldungen bzw. Fehlbans. Es kann aber nicht sein das das immer Lags sind. auch wird die differenz zwsichen den beiden HP´s nicht berücksichtigt.


    Ich habe es mit S0beit getestet, und er hat es 100% erkannt. Jedoch wenn man durch cmd´s gehealt wird, wird es nicht immer als legal erkannt, oftmals kommen meldungen bei den Admins rein. da ich die differenz speichern lasse, zwischen alte und neue hp, müsste selbst wenns lags wären, ein Lagkick geben, was es jedoch nicht tut.


    Beispiel:
    Aktuelle HP: 70
    Neue HP : 100
    Differenz: 30


    Es wird die HP um 30 erhöht und serverside gespeichert, wenn der spieler nun laggt, könnte es trotzdem zu einer meldung kommen, jedoch hat man noch die differnz, die ja mit der gecheateten HP übereinstimmen müsste, was sie jedoch nicht tut.


    Hier mal das Script:
    new Float:Healthcheck[MAX_PLAYERS]; // hier wird die aktuelle "richtige" hp gespeichert
    new Float:healdif[MAX_PLAYERS]; //differenz zwischen alte und neue hp
    new Float:Armourcheck[MAX_PLAYERS];
    new Float:armdif[MAX_PLAYERS];
    new gegessen[MAX_PLAYERS]; // ob er gerade was gegessen hat
    new cheater[MAX_PLAYERS]; // wenn die einen wert von 5 oder höher hat, wird er gebannt
    new lagger[MAX_PLAYERS];// wenn die einen wert von 5 oder höher hat, wird er gekickt wegen Lag
    new Bangrund[MAX_PLAYERS][50]; //hier wird der bangrund gespeichert
    new cheatresettimer[MAX_PLAYERS]; //der timer, der jede minute ein Lagwarn und ein Cheatwarn entfernt


    //ein command womit man gehealt wird:
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    if(strcmp(cmdtext, "/essen", true)==0)
    {
    if((IsPlayerInRangeOfPoint(playerid,10.0,369.3123,-6.0172,1001.8516)) || (IsPlayerInRangeOfPoint(playerid,10.0,376.6667,-67.5152,1001.5078)) || (IsPlayerInRangeOfPoint(playerid,10.0,379.3838,-190.5127,1000.6328)) || (IsPlayerInRangeOfPoint(playerid,10.0,375.7635,-118.9136,1001.4995)))
    {
    if(GetPlayerMoney(playerid) >= 25)
    {
    new Float:hp;
    GetPlayerHealth(playerid,hp);
    gegessen[playerid] = 1; //hier hat er gerade was gegessen
    if(hp < 80.0)
    {
    p_SetPlayerHealth(playerid,hp+20.0); //hier wird sie serverside gespeichert, siehe stock
    }
    else
    {
    p_SetPlayerHealth(playerid,100.0);
    }
    p_GivePlayerMoney(playerid,-25); //das selbe wird auch mit dem geld gemacht
    SendClientMessage(playerid,0x00DD00FF,"Du hast für $25 etwas gegessen!");
    }
    else
    {
    SendClientMessage(playerid,0xDD0000FF,"Du hast nicht genug Geld, Essen kostet $25!");
    }
    }
    }
    return 1;
    }


    stock p_GivePlayerMoney(playerid,money)
    {
    moneydif[playerid] = money; //differenz
    GivePlayerMoney(playerid,money); //geld wird gegeben
    Moneycheck[playerid]+= money; // serverside gespeichert
    return 1;
    }


    stock p_ResetPlayerMoney(playerid)
    {
    moneydif[playerid] = GetPlayerMoney(playerid);
    ResetPlayerMoney(playerid),
    Moneycheck[playerid] = 0;
    return 1;
    }


    stock p_SetPlayerHealth(playerid,Float:health)
    {
    new Float:hp;
    GetPlayerHealth(playerid,hp);
    healdif[playerid] = health-hp; //differenz
    SetPlayerHealth(playerid,health); //hp wird gesettet
    Healthcheck[playerid] = health; //serverside gespeichert
    return 1;
    }


    stock p_SetPlayerArmour(playerid,Float:armour)
    {
    new Float:arm;
    GetPlayerArmour(playerid,arm);
    armdif[playerid] = armour-arm; // differenz wird errechnet, neue armour - alte armour
    SetPlayerArmour(playerid,armour); //armour wird gesettet
    Armourcheck[playerid] = armour; //armour wird serverside gespeichert
    return 1;
    }


    [pwn]//public der jede sekunde checkt:
    public check()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(anticheat == 1)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(i,name,sizeof(name));
    //geldcheat:
    new pgeld, cheatmoney;
    pgeld = GetPlayerMoney(i);
    cheatmoney = pgeld-Moneycheck[i];
    if(cheatmoney >= 1) // über 1 gibt nen warn
    {
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) hat sich $%d aus dem Nichts gezaubert!",name,i,cheatmoney);
    p_ResetPlayerMoney(i);
    p_GivePlayerMoney(i,Moneycheck[i]);
    if(cheatmoney == 25 && gegessen[i] == 1 || moneydif[i] == cheatmoney) // wird überprüft ob er gelaggt hat
    {
    lagger[i]++;
    }
    else
    {
    cheater[i]++;
    }
    KillTimer(cheatresettimer[i]);
    Bangrund[i] = "Geldcheat";
    cheatresettimer[i] = SetTimerEx("cheatreset",60000,0,"i",i);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    if(cheatmoney >= 10000) //über 10k sofort ban
    {
    new str[125];
    GetPlayerName(i,name,sizeof(name));
    format(str,sizeof(str),"[System] %s(%d) hat sich $%d aus dem Nichts gezaubert!",name,i,cheatmoney);
    p_ResetPlayerMoney(i);
    p_GivePlayerMoney(i,Moneycheck[i]);
    cheater[i] = 5;
    KillTimer(cheatresettimer[i]);
    Bangrund[i] = "Geldcheat";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    if(cheatmoney < 0) //falls er weniger geld hat wirds aktuallisiert
    {
    Moneycheck[i] = pgeld;
    }
    //Healthhack
    new Float:hp,Float:cheathp;
    GetPlayerHealth(i,hp);
    cheathp = hp-Healthcheck[i];
    if(cheathp >= 1)
    {
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) hat sich %0.2f HP aus dem Nichts gezaubert!",name,i,cheathp);
    p_SetPlayerHealth(i,Healthcheck[i]);
    if(cheathp <= 20 && gegessen[i] == 1 || healdif[i] == cheathp)
    {
    lagger[i]++;
    }
    else
    {
    cheater[i]++;
    }
    KillTimer(cheatresettimer[i]);
    Bangrund[i] = "Healthhack";
    cheatresettimer[i] = SetTimerEx("cheatreset",60000,0,"i",i);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    if(cheathp < 0)
    {
    Healthcheck[i] = hp;
    }
    //Armourhack:
    new Float:arm,Float:cheatarmour;
    GetPlayerArmour(i,arm);
    cheatarmour = arm-Armourcheck[i];
    if(cheatarmour >= 1)
    {
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) hat sich %0.2f Armour aus dem Nichts gezaubert!",name,i,cheatarmour);
    p_SetPlayerArmour(i,Armourcheck[i]);
    if(IsPlayerInRangeOfPoint(i,3.0,1512.5111,-1478.7697,9.5000) || armdif[i] == cheatarmour)
    {
    lagger[i]++;
    }
    else
    {
    cheater[i]++;
    }
    KillTimer(cheatresettimer[i]);
    Bangrund[i] = "Armourhack";
    cheatresettimer[i] = SetTimerEx("cheatreset",60000,0,"i",i);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    if(cheatarmour < 0)
    {
    Armourcheck[i] = arm;
    }
    if(cheater[i] >= 5)
    {
    new bstr[125];
    format(bstr,sizeof(bstr),"%s wurde vom System gebannt, Grund: %s.",name,Bangrund[i]);
    SendClientMessageToAll(0xFF6347FF,bstr);
    Spieler[i][ban] = 1;
    Spieler[i][bangrund] = Bangrund[i];
    Kick(i);
    }
    if(lagger[i] >= 5)
    {
    new kstr[125];
    format(kstr,sizeof(kstr),"%s wurde vom System gekickt, Grund: Lag.",name);
    SendClientMessageToAll(0xFF6347FF,kstr);
    Kick(i);
    }
    }
    }
    if(gegessen[i] != 0) //falls er was gegessen hat wird die variable wieder zurückgesetzt
    {
    gegessen[i] = 0;
    }
    if(healdif[i] != 0) //die healdif wird wieder resettet
    {
    healdif[i] = 0;
    }
    if(anticheat == 0) //falls das anticheat system abgeschaltet ist, wird cheat und lag warn resettet
    {
    cheater[i] = 0;
    lagger[i] = 0;
    }
    }
    return 1;
    }


    public cheatreset(playerid)
    {
    if(cheater[playerid] > 0)
    {
    cheater[playerid]--;
    }
    if(lagger[playerid] > 0)
    {
    lagger[playerid]--;
    }
    if(cheater[playerid] > 0 || lagger[playerid] > 0)
    {
    cheatresettimer[playerid] = SetTimerEx("cheatreset",60000,0,"i",playerid);
    }
    return 1;
    }


    ich hoffe ihr könnt mir helfen.


    Mfg
    Simon

    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1



    public OnPlayerCommandText(playerid,cmdtext[])
    {
    dcmd(chat,4,cmdtext);
    return 1;
    }


    dcmd_chat(playerid,params[])
    {
    //befehl
    return 1;
    }

    Guten Tag


    Ich möchte im Script überprüfen ob jemand Airbreake benutzt. Ich würde nun innerhalb 3 sekunden 3 mal die posi abfragen und schauen ob die höhe fällt oder steigt. wenn sie steigt, bekommen die admins ne warnung, wenn sie weiterhin steigt, bekommen die admins wieder ne warnung. nach 5 warnungen wird der spieler dann automatisch gebannt.
    nun habe ich das problem, dass es einige Landschaften gibt, die weiter unten und andere die weiter oben liegen. das Gebirge in SF zum beispiel ist sehr hoch, wenn ich da mit einem auto hochfahre, steigt die höhe auch.


    Wie kann ich das nun am besten überprüfen, ob er denn nun airbreake hat oder nicht, das man es nicht 100% überprüfen kann, weiß ich.


    wäre sehr nett wenn mir da einer hilfreiche tipps geben könnte.


    MfG
    Simon

    Guten Tag


    Ich möchte ein eigenes carsystem erstellen. In der datei sollen alle componenten eines autos gespeichert und geladen werden.
    dazu müsste ich wissen wie ich die einzelnen componenten abfragen kann. da ich noch nie mit den componenten gearbeitet habe, kenne ich mich da wenig aus und muss mich da erstmal reinfummeln. Es wäre sehr nett wenn ihr mir dabei helfen könntet, indem ihr mir es erkärt, mir ein beispiel zeigt oder etwas in der art, was mir weiterhelfen könnte.


    MfG
    Simon

    hatte ich schon probiert, geht jedoch auch nicht


    falls er die dgl auswählt, wird die wakawaffe auf 24 gesetzt. ich frage dann ab ob der inputtext zwischen 0 und 300 ist und wenn ja, wird die waffe Wakawaffe, also in dem fall id 24 desert eagle gegeben mit der entsprechenden muni. habs in einem anderen script eig genauso und dort klappt es.. fragt mich net wieso :S

    Guten Tag


    Ich habe iwie so ein blödes problem mit meinen dialogen: Ich kann mir als cop mit /kaufen in der waka waffen aussuchen. einige waffen können sofort gegeben werden, bei anderen soll er die Schussanzahl eingeben. doch iwie wird diese Waffe mit der entsprechenden Anzahl von Munition nicht gegeben. Verstehe net wo da der fehler ist..


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new wakawaffe[MAX_PLAYERS];
    if(dialogid == DIALOG_WAKA)
    {
    if(response)
    {
    wakawaffe[playerid] = 0;
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid,41,200);
    ShowPlayerDialog(playerid,DIALOG_WAKA,DIALOG_STYLE_LIST,"Waffenkammer","Pfefferspray\nSchutzweste\nSchlagstock\nDesert Eagle\nMp5\nShotgun","Okay","Abbrechen");
    }
    if(listitem == 1)
    {
    SetPlayerArmour(playerid,100);
    ShowPlayerDialog(playerid,DIALOG_WAKA,DIALOG_STYLE_LIST,"Waffenkammer","Pfefferspray\nSchutzweste\nSchlagstock\nDesert Eagle\nMp5\nShotgun","Okay","Abbrechen");
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid,3,1);
    ShowPlayerDialog(playerid,DIALOG_WAKA,DIALOG_STYLE_LIST,"Waffenkammer","Pfefferspray\nSchutzweste\nSchlagstock\nDesert Eagle\nMp5\nShotgun","Okay","Abbrechen");
    }
    if(listitem == 3)
    {
    wakawaffe[playerid] = 24;
    ShowPlayerDialog(playerid,DIALOG_WAKA_WAFFEN,DIALOG_STYLE_INPUT,"Munition","Wieviel Schuss möchtest du haben?","Okay","Zurück");
    }
    if(listitem == 4)
    {
    wakawaffe[playerid] = 29;
    ShowPlayerDialog(playerid,DIALOG_WAKA_WAFFEN,DIALOG_STYLE_INPUT,"Munition","Wieviel Schuss möchtest du haben?","Okay","Zurück");
    }
    if(listitem == 5)
    {
    wakawaffe[playerid] = 25;
    ShowPlayerDialog(playerid,DIALOG_WAKA_WAFFEN,DIALOG_STYLE_INPUT,"Munition","Wieviel Schuss möchtest du haben?","Okay","Zurück");
    }
    }
    }
    if(dialogid == DIALOG_WAKA_WAFFEN)
    {
    if(response)
    {
    new muni = strval(inputtext);
    if(muni > 0 && muni < 301)
    {
    GivePlayerWeapon(playerid,wakawaffe[playerid],muni);
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Es sind nur bis zu 300 Schuss möglich!");
    }
    }
    ShowPlayerDialog(playerid,DIALOG_WAKA,DIALOG_STYLE_LIST,"Waffenkammer","Pfefferspray\nSchutzweste\nSchlagstock\nDesert Eagle\nMp5\nShotgun","Okay","Abbrechen");
    wakawaffe[playerid] = -1;
    }

    ich versuche es erstmal mit einer anderen wetter id.. schön blöd von mir, habe Immer id 0 drinne, weil noch kein wetter system eingebaut ist :S:S

    wie gesagt: alles ganz normal, auf anderen servern gehts ja auch..


    lspdcars[0] = AddStaticVehicleEx(596,1595.3882,-1711.0793,5.6148,0.1000,154,1,-1); // lspdcar 1
    lspdcars[1] = AddStaticVehicleEx(596,1591.3882,-1711.0793,5.6168,0.3152,154,1,-1); // lspdcar 2
    lspdcars[2] = AddStaticVehicleEx(596,1587.3882,-1711.0793,5.5766,0.1320,154,1,-1); // lspdcar 3
    lspdcars[3] = AddStaticVehicleEx(596,1583.3882,-1711.0793,5.6129,0.4952,154,1,-1); // lspdcar 4
    lspdcars[4] = AddStaticVehicleEx(596,1578.6200,-1711.0681,5.6132,0.5235,154,1,-1); // lspdcar 5
    lspdcars[5] = AddStaticVehicleEx(596,1574.3501,-1710.9567,5.6143,359.3753,154,1,-1); // lspdcar 6
    lspdcars[6] = AddStaticVehicleEx(596,1570.5082,-1710.9441,5.6117,358.9558,154,1,-1); // lspdcar 7
    lspdcars[7] = AddStaticVehicleEx(596,1566.5250,-1711.0260,5.6127,1.1997,154,1,-1); // lspdcar 8
    lspdcars[8] = AddStaticVehicleEx(596,1563.0305,-1711.0898,5.6164,359.7440,154,1,-1); // lspdcar 9
    lspdcars[9] = AddStaticVehicleEx(596,1558.6930,-1711.0504,5.6131,0.3119,154,1,-1); // lspdcar 10
    lspdcars[10] = AddStaticVehicleEx(599,1545.4371,-1684.3776,6.0789,91.4235,154,1,-1); // lspd ranger 1
    lspdcars[11] = AddStaticVehicleEx(599,1545.4382,-1680.3623,6.0877,88.8113,154,1,-1); // lspd ranger 2
    lspdcars[12] = AddStaticVehicleEx(599,1545.5671,-1676.2528,6.0829,92.0615,154,1,-1); // lspd ranger 3
    lspdcars[13] = AddStaticVehicleEx(599,1545.3813,-1672.1467,6.0801,90.1684,154,1,-1); // lspd ranger 4
    lspdcars[14] = AddStaticVehicleEx(599,1545.5203,-1667.9104,6.0815,89.7179,154,1,-1); // lspd ranger 5
    lspdcars[15] = AddStaticVehicleEx(599,1545.3861,-1662.9945,6.0798,92.6173,154,1,-1); // lspd ranger 6
    lspdcars[16] = AddStaticVehicleEx(599,1545.4750,-1659.1805,6.0785,91.3638,154,1,-1); // lspd ranger 7
    lspdcars[17] = AddStaticVehicleEx(599,1545.4888,-1655.0928,6.0796,92.2027,154,1,-1); // lspd ranger 8
    lspdcars[18] = AddStaticVehicleEx(431,1538.3126,-1646.1682,6.0357,180.3352,154,154,-1); // lspd bus 1
    lspdcars[19] = AddStaticVehicleEx(430,728.0081,-1494.6898,-0.1833,178.9398,154,1,-1); // lspd boot 1
    lspdcars[20] = AddStaticVehicleEx(430,718.3655,-1494.8167,-0.3506,179.2021,154,1,-1); // lspd boot 2
    lspdcars[21] = AddStaticVehicleEx(599,1545.4371,-1684.3776,6.0789,91.4235,154,1,-1); // lspd ranger 1
    lspdcars[22] = AddStaticVehicleEx(599,1545.4382,-1680.3623,6.0877,88.8113,154,1,-1); // lspd ranger 2
    lspdcars[23] = AddStaticVehicleEx(599,1545.5671,-1676.2528,6.0829,92.0615,154,1,-1); // lspd ranger 3
    lspdcars[24] = AddStaticVehicleEx(599,1545.3813,-1672.1467,6.0801,90.1684,154,1,-1); // lspd ranger 4
    lspdcars[25] = AddStaticVehicleEx(599,1545.5203,-1667.9104,6.0815,89.7179,154,1,-1); // lspd ranger 5
    lspdcars[26] = AddStaticVehicleEx(599,1545.3861,-1662.9945,6.0798,92.6173,154,1,-1); // lspd ranger 6
    lspdcars[27] = AddStaticVehicleEx(599,1545.4750,-1659.1805,6.0785,91.3638,154,1,-1); // lspd ranger 7
    lspdcars[28] = AddStaticVehicleEx(599,1545.4888,-1655.0928,6.0796,92.2027,154,1,-1); // lspd ranger 8
    lspdcars[29] = AddStaticVehicleEx(431,1538.3126,-1646.1682,6.0357,180.3352,154,154,-1); // lspd bus
    lspdcars[30] = AddStaticVehicleEx(430,728.0081,-1494.6898,-0.1833,178.9398,154,1,-1); // lspd boot 1
    lspdcars[31] = AddStaticVehicleEx(469,1550.1392,-1707.3621,28.4065,88.7694,154,1,-1); // lspd heli 1
    lspdcars[32] = AddStaticVehicleEx(469,1550.5707,-1643.3999,28.4316,87.4105,117,117,-1); // lspd heli 2
    lspdcars[33] = AddStaticVehicleEx(497,1567.6042,-1707.2889,28.5715,89.0716,154,1,-1); // lspd heli 3
    lspdcars[34] = AddStaticVehicleEx(497,1568.4546,-1692.3574,28.5656,91.6417,154,1,-1); // lspd heli 4
    lspdcars[35] = AddStaticVehicleEx(497,1568.1719,-1643.7777,28.5788,91.6038,154,1,-1); // lspd heli 5
    lspdcars[36] = AddStaticVehicleEx(497,1567.1249,-1658.2278,28.5723,90.9281,154,1,-1); // lspd heli 6
    lspdcars[37] = AddStaticVehicleEx(415,1585.0303,-1667.6459,5.6647,269.4838,154,1,-1); // lspd leadercar 1
    lspdcars[38] = AddStaticVehicleEx(541,1585.0269,-1671.4490,5.5164,269.9822,154,1,-1); // lspd leadercar 2
    lspdcars[39] = AddStaticVehicleEx(523,1585.5764,-1680.0836,5.4623,269.3710,117,117,-1); // lspd bike 1
    lspdcars[40] = AddStaticVehicleEx(523,1585.5386,-1678.6497,5.4509,269.4763,117,117,-1); // lspd bike 2
    lspdcars[41] = AddStaticVehicleEx(523,1585.5459,-1676.9888,5.4524,264.0093,117,117,-1); // lspd bike 3
    lspdcars[42] = AddStaticVehicleEx(523,1585.5283,-1675.8082,5.4580,270.4337,117,117,-1); // lspd bike 4


    weder errors noch warnings

    nope keine mods und schon garnicht cleo mods..


    wenn ich mods reinmache, mache ich nur mods rein die die grafik verbessern, bessere effekte oder schönere map, aber z.Z. keine mods drinne

    ich habe garnichts gescriptet mit den sirenen.. das sind die copcars die schon die sirenen oben drauf haben.


    soweit ich weiß geht das mit den sirenen scripten erst seid 0.3c und auf allen servern vor 0.3c auf denen ich war und copcars genutzt habe, gingen die sirenen

    Guten Tag


    Ich füge Copcars mit AddStaticVehicle(Ex) zu. Wenn ich sie nun nutzen will, buggt die Sirene: man hört sie, aber das Blaulicht bleibt aus..
    Dafür blinken aber reifen oder objekte in rot und blau..


    wäre sehr nett wenn mir da jemand helfen könnte.

    du hast bestimmt ein car system runtergeladen und die installation net richtig gelesen. dort musst du bestimmt einige publics ändern, bsp:


    OnGameModeInit() in A_OnGameModeInit();


    deswegen erkennt er die publics nicht..