Beiträge von Simon

    Es gibt eine Funktion in Pawno, mit der man spieler beobachten kann.
    Nun ist die Anscht, wenn der Spieler der beobachtet wird im Auto sitzt, nicht gerade die Beste..
    könnte man das so scripten, das man so wie der spieler selbst, von hinten auf sein auto schaut?

    Guten Tag


    habe plötzlich ein error in dem include "core". ich weiß net wieso ich den plötzlich bekomme. ich ahbe compilled da war alles normal. habe nichts am script verändert und nochmal compilled und aufeinma bekomme ich ein error :S
    Habe mir schon neue Include runtergeldade, hat nichts gebracht.


    C:\Users\Simon Siggelkow\Desktop\Server 3b\pawno\include\core.inc(12) : error 010: invalid function or declaration
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Zeile:


    native heapspace();


    Ich hoffe ihr könnt mir helfen


    mfg
    Simon

    Guten Tag


    ich bekomme plötzlich eine Fehlermeldung wenn ich das script compillen will..


    "Access violation as address 00404128 in modul ´pawno.exe´. Read of address 80000002."


    Ich weiß nicht warum die meldung plötzlich kommt.


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


    mfg
    Simon

    also eine neue variable namens "i" wird erstellt: new i.
    diese wird auf 0 gesetzt: i = 0;
    i < MAX_PLAYERS.: falls "i" kleiner als Alle Spieler auf dem Server sind, i++ wird "i" um eins erhöht. da es eine for-schleife ist, wird es solange wiederholt bis i < MAX_PLAYERS nicht mehr der fall ist.


    nach dieser for schleife ist i = alle spieler.


    nun macht man abfragen um bestimte spieler zu bekommen, beispiel:


    if(Spieler[i][Admin] == 1)


    i == alle spieler.
    falls Spieler Admin Levle 1 ist.


    das heißt: i ist nun ALLe die die Admin == 1 sind.


    das heißt du kannst nun z.B. eine Nachricht an einer playerid senden, die gleichzeitig an mehere geht: SendCLientMessage(i,farbe,text);


    i ist = alle die die Admin 1 sind, also an alle "i" wird die nachricht gesendet.

    das ist alles nicht mal eben von einer minute auf die nächste zu erklären und zu kapieren schonmal garnicht.


    kurz gesagt:


    neue variable (bsp: member und leader) die gespeichert wird.


    SpielerInfo[playerid]][Member] (wenn du es mit dini machst, muss nicht SpielerInfo sein, kommt drauf an wie du es hast)


    dann fragste es halt ab und machst cmd´s beispiel:


    makeleader id id


    bsp: /makeleader 4 1.


    id 4 wird zum Leader der Fraktion 1 gemacht. was dabei noch passieren soll musste selber machen.


    invite id


    bsp: /invite 4


    id 4 wird in die fraktion des Leaders invitet, also: SpielerInfo[id][Member] = Spieler[playerid][Leader];

    alle einfügen mit AddPlayerClass...


    wenn deiner nur für bestimmte leute bestimmte skins da sein sollen:


    OnGameModeInit()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(SpielerInfo[i][Adminlevel] >= 1)
    {
    AddPlayerClass(..);
    }
    }
    return 1;
    }

    Guten Tag


    Ich habe da mal 2 Fragen. und zwar bekomme ich es nicht hin das das script erkennt ob er eine Taste gedrückt hält. also wenn der motor aus ist vom auto, soll er nicht fahren können. ganz einfach: wenn er w,s drückt oder w,s gedrückt hält: SetVehicleVelocity(vehicleid,0,0,z);
    doch trotz samp wiki bekomme ich die definition vom Gedrückt halten nicht hin.


    die 2. frage: Ich würde gerne Pay n´Spray abstellen. also wenn man dort rein fährt soll überprüft werden wieviel hp das auto hat und sobald es dort gereppt wird wieder auf seine alte hp gesetzt wird.
    Habe es unter dem Public OnVehiclePaintJob und OnVehicleRespray oder so änlich gesetzt, hat aber nicht so richtig geklappt.



    wäre sehr nett wenn mir die Fragen beantwortet werden könnten..


    mfg
    Simon

    Guten Tag


    Ich habe ein motor system eingebaut.
    man gibt /motor ein um den motor zu starten oder zu stoppen.
    wenn der motor an ist, kann man ganz normal fahren. wenn der motor aus ist, soll vehiclevelocity auf 0 gesetzt werden, also das fahrzeug soll gestoppt werden.
    nun klappt das net ganz. ich habe unter OnKeyStateChange abgefragt ob er up oder down drückt, bzw gedrückt lässt. doch irgentwie kann ich immer uneingeschränkt fahren:


    Command:
    if(strcmp("/motor", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid != 435 && vehicleid != 441 && vehicleid != 450 && vehicleid != 464 && vehicleid != 465 && vehicleid != 481 && vehicleid != 501
    && vehicleid != 509 && vehicleid != 510 && vehicleid != 564 && vehicleid != 569 && vehicleid != 570 && vehicleid != 584 && vehicleid != 590
    && vehicleid != 591 && vehicleid != 594 && vehicleid != 606 && vehicleid != 607 && vehicleid != 608 && vehicleid != 610 && vehicleid != 611)
    {
    new str[256],name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name1,sizeof(name1));
    if(motor[vehicleid] == 0)
    {
    new zufall0[2][1] =
    {
    {0},
    {1}
    };
    new rand = random(sizeof(zufall0));
    if(zufall0[rand][0] == 0)
    {
    format(str,sizeof(str),"** %s dreht den Schlüssel, der Motor springt an!",name1);
    motor[vehicleid] = 1;
    }
    else
    {
    format(str,sizeof(str),"** %s dreht den Schlüssel, der Motor springt nicht an!",name1);
    }
    }
    else if(motor[vehicleid] == 1)
    {
    new Float:vx, Float:vy, Float:vz;
    GetVehicleVelocity(vehicleid,vx,vy,vz);
    if(vx == 0 && vy == 0 && vz == 0)
    {
    motor[vehicleid] = 0;
    format(str,sizeof(str),"** %s dreht den Schlüssel und schaltet den Motor aus!",name1);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst den Motor nicht in der Fahrt ausmachen!");
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new Float:px, Float:py, Float:pz;
    GetPlayerPos(playerid,px,py,pz);
    if(IsPlayerInRangeOfPoint(i,35.0,px,py,pz))
    {
    SendClientMessage(i,0x894BFFFF,str);
    }
    }
    }
    }
    }


    wenn er fahren will:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & 128 || newkeys & -128 || GEDRUECKT(128) || GEDRUECKT(-128))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(motor[GetPlayerVehicleID(playerid)] == 0)
    {
    new Float:vx, Float:vy, Float:vz;
    GetVehicleVelocity(GetPlayerVehicleID(playerid),vx,vy,vz);
    SetVehicleVelocity(GetPlayerVehicleID(playerid),vx*0,vy*0,vz*0);
    }
    }
    }
    return 1;
    }


    defines und andere dinge die damit zu tun haben:
    #define GEDRUECKT(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    motor[vehicleid] = 0;
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    motor[vehicleid] = 0;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    motor[GetPlayerVehicleID(playerid)] = 0;
    return 1;
    }


    Ich hoffe ihr könnt mir da helfen..


    mfg
    Simon

    habs schon unter OnPlayerSpawn. gabs nur ein error da das nicht definiert war. ich werde ma stock einfügen und schauen obs klappt.


    //edit: nein es hat leider nichts gebracht. also die Animation soll immer weiter gehen und nicht aufhöhren. er soll dabei auf der selben stelle bleiben und gefreezed sein.
    demnach kommt bei mir folgendes bei heraus:


    public OnPlayerSpawn(playerid)
    {
    ClearAnimations(playerid);
    PreloadAnimLib(playerid,"CRACK");
    if(Spieler[playerid][Verletzt] == 1)
    {
    KillTimer(todtimer1[playerid]);
    KillTimer(todtimer2[playerid]);
    SetPlayerPos(playerid,Spieler[playerid][posx],Spieler[playerid][posy],Spieler[playerid][posz]);
    SetPlayerInterior(playerid, Spieler[playerid][interior]);
    SetPlayerVirtualWorld(playerid,Spieler[playerid][virtualw]);
    freeze(playerid);
    todtimer1[playerid] = SetTimerEx("tot1",180000,0,"i",playerid);
    Spieler[playerid][Spawn]--;
    ApplyAnimation(playerid,"CRACK","crckdeth2",3.0,1,1,1,1,0);
    }
    if(Spieler[playerid][Tot] == 1)
    {
    KillTimer(todtimer1[playerid]);
    KillTimer(todtimer2[playerid]);
    SetPlayerPos(playerid,Spieler[playerid][posx],Spieler[playerid][posy],Spieler[playerid][posz]-120);
    SetPlayerInterior(playerid,Spieler[playerid][interior]);
    SetPlayerVirtualWorld(playerid,Spieler[playerid][virtualw]);
    todtimer2[playerid] = SetTimerEx("tot2",60000,0,"i",playerid);
    Spieler[playerid][Verletzt] = 0;
    Spieler[playerid][Tot] = 1;
    SetPlayerCameraPos(playerid,Spieler[playerid][posx],Spieler[playerid][posy],Spieler[playerid][posz]+75);
    SetPlayerCameraLookAt(playerid,Spieler[playerid][posx],Spieler[playerid][posy],Spieler[playerid][posz]);
    Spieler[playerid][Spawn]--;
    freeze(playerid);
    }
    return 1;
    }


    stock PreloadAnimLib(playerid, animlib[])
    {
    ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
    return 1;
    }


    alles klappt bis auf der teil wo die Animation ausgeführt werden soll.


    //edit: script geändert und richtig eingedrückt


    //edit² klappt nun alles =)

    Guten Tag


    Irgentwie buggen bei mir die Animationen.
    bei 0.3b wurde daran irgentwas verändert, weiß nur net genau was und wie.
    ich habe es bisher so:


    ApplyAnimation(playerid,lib,name,speed,loop,Lockx,Locky,Freeze,Time


    Indem Fall:
    ApplyAnimation(playerid,"CRACK","crckdeth2",3.0,1,1,1,1,0);


    doch irgentwie wird die Animation nicht ausgeführt...

    Guten Tag.


    Ich habe mal ein Anti-teleport hack versucht zu machen.


    Es läuft ein Timer von 1ner Sekunde, der alles mögliche checkt und abfragt. unteranderem fragt er die position des spielers ab.
    es wird ein timer von 500ms gestartet, der also beendet ist, bevor der 2. timer von 1ne sekunde abläuft.
    also es wird die position abgefragt, dann wird ne halbe sekunde später wieder die position abgefragt und überprüft wie hoch die distanz ist.
    Ich habe noch eine Variable mit eingebunden, die überprüft ob es ein Admin teleport oder cheaterteleport ist. also bei /get id, wird antiteleport bei der id ausgeschaltet und nach ca. 2 sekunden wieder angeschaltet.


    OnGameModeInit:
    SetTimer("check",1000,1);


    der timer:
    public check()
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    //anti teleport:
    if(poscheatan[i] == 1 && Spieler[i][Admin] <= 0) //fra gt ab ob anti teleport cheat an ist und ob er admin ist
    {
    GetPlayerPos(i,cheatpos[0],cheatpos[1],cheatpos[2]);
    SetTimerEx("cheatposcheck",500,0,"i",i);
    }
    else if(poscheatan[i] == 2) //das hier wird benötigt, falls der spieler vom script aus geportet wird
    {
    poscheatan[i] = 3;
    }
    else if(poscheatan[i] == 3)
    {
    poscheatan[i] = 1;
    }
    }
    return 1;
    }


    2. Timer:
    public cheatposcheck(playerid)
    {
    if(distanz(playerid,cheatpos[0],cheatpos[1],cheatpos[2]) >= 150)
    {
    cheater[playerid]++;
    new str[256],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),"[WARNUNG][CHEAT] %s (%d) steht und Verdacht eines Teleport-Hacks!", name, playerid);
    for (new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 1)
    {
    SendClientMessage(j,0x0000FFFF,str);
    }
    }
    if(cheater[playerid] >= 5)
    {
    new bstr[256],Spielerdatei[256];
    format(bstr,sizeof(bstr),"%s wurde vom System gebannt, Grund: Teleport", name);
    SendClientMessageToAll(0xFF0000FF,bstr);
    Spieler[playerid][ban] = 1;
    format(Spielerdatei,sizeof(Spielerdatei),"/User/%s.ini", name);
    dini_Set(Spielerdatei,"bangrund","Teleport");
    Kick(playerid);
    }
    }
    return 1;
    }


    Hier die distanz definiert:
    stock distanz(playerid,Float:x,Float:y,Float:z)
    {
    new Float:dis;
    new Float:x1,Float:y1,Float:z1;
    if (!IsPlayerConnected(playerid)) return -1;
    GetPlayerPos(playerid,x1,y1,z1);
    dis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2));
    return floatround(dis);
    }


    und hier ein beispiel dcmd, wo gezeigt wird wie ich die variable poscheckan veränder, damit er erkennt das es sich im ein admincmd handelt:
    dcmd_get(playerid,params[])
    {
    new pID;
    if(sscanf(params, "u", pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /get [Playerid]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    if(Spieler[playerid][Admin] <= 1)
    {
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin Level 2!");
    }
    if(Spieler[playerid][Admin]<Spieler[pID][Admin])
    {
    return SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nicht an höherrangigen Admins ausführen!");
    }
    else
    {
    poscheatan[pID] = 0; //wird ausgeschaltet
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(pID, x+2, y+2, z+2);
    new admint = GetPlayerInterior(playerid);
    SetPlayerInterior(pID, admint);
    new admvrt = GetPlayerInterior(playerid);
    SetPlayerVirtualWorld(pID, admvrt);
    new aname[MAX_PLAYER_NAME], string2[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(string2, sizeof(string2), "Du wurdest von %s zu sich teleportiert.", aname);
    SendClientMessage(pID, COLOR_RED, string2);
    new name[MAX_PLAYER_NAME], string[256];
    GetPlayerName(pID, name, sizeof(name));
    format(string, sizeof(string), "Du hast %s zu dir teleportiert.", name );
    SendClientMessage(playerid, COLOR_GREEN, string);
    poscheatan[pID] = 2; //wird auf 2 gesetzt, im timer auf 3 und danach auf 1. also ca. 2 sekunden nach dem er geportet wird, wird antiteleport cheat wieder aktiviert
    }
    return 1;
    }


    Das Problem ist jetzt, das es immer fehlmeldung gibt. man wird gebannt obwohl man auf einer stelle steht. Ich würde gerne wissen was daran alles falsch ist und wie man es besser machen könnte. das habe ich nun auf die schnelle gemacht.


    mfg
    Simon

    das möchte ich aber nicht, selbst dann wäre es so, das ich die position des flugzeuges abfragen muss und ihn in das entsprechende flugzeug/interior porten muss, denn man will ja auch wieder aussteigen und dann net iwo landen.....

    Guten Tag


    Ich habe insgesammt 16 Flugzeuge bei denen man nicht mit "g" einsteigen kann.
    Nun möchte ich das wenn man "c" tippt, einsteigt.
    Nun muss der Spieler in der nähe des Flugzeuges sein. Ich könnte jetzt jede Position von den Flugzeugen abfragen und dann abfragen ob der spieler in der nähe ist.
    ich glaube aber das ist bei 16 flugzeugen, wo noch einige dazukommen werden etwas umständlich.
    Ich würde gerne wissen ob man das auch einfacher hinkricht. Man drückt c, dann werden alle Positionen der Flugzeuge abgefragt und wenn man in der nähe ist reingeportet.


    Flugzeuge[0] = AddStaticVehicleEx(553,1885.2758,-2280.3645,14.8799,223.4358,43,0,300000); // Ls Juank Air 1
    Flugzeuge[1] = AddStaticVehicleEx(553,1922.6431,-2256.1790,14.8813,182.0255,0,43,300000); // Ls Juank Air 2
    Flugzeuge[2] = AddStaticVehicleEx(553,1985.0442,-2268.3049,14.8907,133.4832,43,0,300000); // Ls Juank Air 3
    Flugzeuge[3] = AddStaticVehicleEx(553,1987.5764,-2328.5359,14.8859,123.6967,0,43,300000); // Ls Juank Air 4
    Flugzeuge[4] = AddStaticVehicleEx(553,1988.7629,-2389.3784,14.9307,129.6101,43,0,300000); // Ls Juank Air 5
    Flugzeuge[5] = AddStaticVehicleEx(511,1888.4235,-2623.2212,14.9138,1.1494,43,0,300000); // Ls Beagle 1
    Flugzeuge[6] = AddStaticVehicleEx(511,1822.7083,-2623.8357,14.9428,1.2805,0,43,300000); // Ls Beagle 2
    Flugzeuge[7] = AddStaticVehicleEx(511,1753.9015,-2623.5232,14.9370,0.3991,43,0,300000); // Ls Beagle 3
    Flugzeuge[8] = AddStaticVehicleEx(511,1682.3170,-2623.9282,14.9369,0.6344,0,43,300000); // Ls Beagle 4
    Flugzeuge[9] = AddStaticVehicleEx(511,1617.3544,-2624.5203,14.9457,0.3654,43,0,300000); // Ls Beagle 5


    Flugzeuge[10] = AddStaticVehicleEx(553,-1397.5062,-623.0504,15.4825,344.6859,86,7,300000); // sf Juank Air 1
    Flugzeuge[11] = AddStaticVehicleEx(553,-1335.9651,-622.5062,15.4943,349.3017,7,86,300000); // sf Juank Air 2
    Flugzeuge[12] = AddStaticVehicleEx(553,-1267.5051,-622.7728,15.4798,354.4384,86,7,300000); // sf Juank Air 3
    Flugzeuge[13] = AddStaticVehicleEx(553,-1205.3726,-140.0915,15.4849,110.6607,86,7,300000); // sf Juank Air 4
    Flugzeuge[14] = AddStaticVehicleEx(553,-1246.6832,-93.1168,15.4290,110.8636,7,86,300000); // sf Juank Air 5
    Flugzeuge[15] = AddStaticVehicleEx(511,-1354.3282,-470.2699,15.5641,162.6342,86,7,300000); // sf Beagle 1
    Flugzeuge[16] = AddStaticVehicleEx(511,-1384.3976,-484.9226,15.5656,245.6104,7,86,300000); // sf Beagle 2
    Flugzeuge[17] = AddStaticVehicleEx(511,-1430.4285,-508.5019,15.5669,165.0535,86,7,300000); // sf Beagle 3
    Flugzeuge[18] = AddStaticVehicleEx(511,-1460.6071,-522.7112,15.5654,247.8180,7,86,300000); // sf Beagle 4

    Flugzeuge[19] = AddStaticVehicleEx(553,1577.3212,1355.4994,12.1877,146.5268,1,171,300000); // lv Juank Air 1
    Flugzeuge[20] = AddStaticVehicleEx(553,1566.6401,1393.5623,12.1828,72.2725,171,1,300000); // lv Juank Air 2
    Flugzeuge[21] = AddStaticVehicleEx(553,1568.1456,1505.0564,12.1922,112.0304,1,171,300000); // lv Juank Air 3
    Flugzeuge[22] = AddStaticVehicleEx(553,1580.6182,1538.2596,12.1716,38.0320,171,1,300000); // lv Juank Air 4
    Flugzeuge[23] = AddStaticVehicleEx(511,1621.6581,1545.5393,12.1930,22.9421,171,1,300000); // lv Beagle 1
    Flugzeuge[24] = AddStaticVehicleEx(511,1647.0996,1556.5338,12.1940,23.8876,1,171,300000); // lv Beagle 2
    Flugzeuge[25] = AddStaticVehicleEx(511,1677.4978,1631.3187,12.2074,179.1760,1,171,300000); // lv Beagle 3
    Flugzeuge[26] = AddStaticVehicleEx(511,1609.9133,1629.5354,12.2104,179.3283,171,1,300000); // lv Beagle 4


    Die Beagle gehören nicht dazu..


    es wäre sehr nett und hilfreich wenn mir dabei einer helfen könnte.


    mfg
    Simon

    Guten Tag.


    Wenn ein Flugzeug abstürzt, kommt eine Meldung, dass ein Flugzeug abgestürzt ist. Nun würde ich gerne abfragen wieviele dabei gestorben sind.
    also muss ich die anzahl der playerids zählen.
    Es wäre sehr nett wenn mir einer erklären könnte wie genau die Funktion aussehen muss.
    Ich glaube man muss es mit einer for-Schleife machen, habs auch schon probiert aber nicht hinbekommen.
    Ich bedanke mich schonmal.


    mfg
    Simon