Beiträge von Hagi

    Ich habe ein Problem mit Untermenüs:


    ganz oben
    new Menu:Auto;
    new Menu:Sport;
    new Menu:Alpha;


    gamemode
    Auto = CreateMenu("Auto",2,200.0,100.0,150.0,150.0);
    AddMenuItem(Auto,0, "Sport");

    Sport = CreateMenu("Sport",2,200.0,100.0,150.0,150.0);
    AddMenuItem(Sport,0,"Alpha");


    Menu row
    public OnPlayerSelectedMenuRow(playerid, row)
    {
    TogglePlayerControllable(playerid,0);
    new Menu:Menu = GetPlayerMenu(playerid);


    new Float:x,Float:y,Float:z;
    new Float:rot;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,rot);


    if(Menu == Auto)
    {
    switch(row)
    {
    case 0:// Sport
    {
    ShowMenuForPlayer(Sport,playerid);
    }


    if(Menu == Alpha)
    {
    CreateVehicle(602,x,y,z,rot,-1,-1,-1);
    {



    }
    }



    return 1;
    }


    Bekomme diese Errors / Warnings


    Zitat

    gamemodes\car.pwn(82) : error 002: only a single statement (or expression) can follow each "case"
    gamemodes\car.pwn(82 -- 83) : error 028: invalid subscript (not an array or too many subscripts): "Menu"
    gamemodescar.pwn(84) : warning 217: loose indentation
    gamemodes\car.pwn(85) : warning 217: loose indentation

    Bezieht sich auf:


    1.if(Menu == Alpha)
    2.if(Menu == Alpha)
    {
    3.CreateVehicle(602,x,y,z,rot,-1,-1,-1);
    4.{


    Also der Teil


    if(Menu == Alpha)
    {
    CreateVehicle(602,x,y,z,rot,-1,-1,-1);
    {


    Sagt mir bitte wo der Fehler ist und wie ich ihn beheben kann.

    Danke aber Keks of Death, dass raff ich im Moment noch nicht.
    Hier mal das komplette script wie ich es bisher habe. Es funktioniert nicht.
    Und zwar hebt man als Spieler das Ding sofort auf.
    Und im Auto kann man es auch sofort aufheben.
    Aber es passiert nicht keine Explosion
    Ist meiner Meinung nach wohl ein return Fehler. Weiß aber nicht genau wo.


    #include <a_samp>


    new mine;
    new minescharf;



    new automine;
    new autominescharf = 0;


    #define rot 0xFF0000FF
    #define blau 0x0000FFFF


    #define Max_Mienen 10


    forward mine1();
    forward automine1();


    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }


    #endif


    public OnGameModeInit()
    {
    UsePlayerPedAnims();
    SetGameModeText("Mine");
    AddPlayerClass(0, 2050.3783, 1343.1572, 17.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddStaticVehicleEx(567,2050.3783, 1343.1572, 156.3746,0,-1,-1,-1);
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mine", cmdtext, true) == 0)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,blau," Du kannst eine Mine nur ausßerhalb eines Fahrzeuges legen");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,blau,"In 5 Sekunden wird die Mine scharf gemacht.");
    SetTimer("mine1",5000,0);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    mine = CreatePickup(1654,3,x,y,z-0.5);
    return 1;
    }
    }




    if (strcmp("/automine", cmdtext, true) == 0)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,blau," Du kannst eine Mine nur ausßerhalb eines Fahrzeuges legen");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,blau,"In 5 Sekunden wird die Mine scharf gemacht.");
    SetTimer("automine1",5000,0);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    mine = CreatePickup(1654,14,x,y,z-0.5);
    return 1;
    }
    }


    return 0;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == mine)
    {
    if(minescharf == 1)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    }
    else
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateExplosion(x,y,z,7,10);
    minescharf = 0;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,rot," !!! Achtung mine ist 'NOCH' nicht scharf. Renn so schnell du kannst !!!");
    return 1;
    }
    }


    if(pickupid == automine)
    {
    if(autominescharf == 1)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Float:x,Float:y,Float:z;
    new auto;
    auto = GetPlayerVehicleID(playerid);
    GetVehiclePos(auto,x,y,z);
    CreateExplosion(x,y,z,7,10);
    }
    else
    {
    }
    }
    else
    {
    SendClientMessage(playerid,rot," !!! Achtung mine ist 'NOCH' nicht scharf. Fahr so schnell du kannst weg !!!");

    }
    }


    return 1;
    }


    public mine1()
    {
    minescharf = 1;
    return 1;
    }


    public automine1()
    {
    autominescharf = 1;
    return 1;
    }

    Ja Also ich hatte auch schon per Timer versucht, dass wenn der Timer abgelaufen ist, erst das Pickup erstellt wird. Aber dann muss man im Timer also im public x,y,z definieren und das beziehts sich ja auf die Playerpos die bei /mine existierte. Und leider gehts net, dass man bei /mine definiert und beim public einsetzt und erstellt.


    @1: Da haben wir wohl gleichzeitig geschrieben XD. Ich probiers mal.


    @2: Und wennich jetzt wollte, dass jeder Spieler nur 1 Mine legen kann. Muss ich dann
    new minegelegt = 0;
    machen und dann beim Mine gelegt
    minegelegt = 1;
    und dann bei /mine noch eine abfrage machen ?
    if(minegelegt == 0);
    {
    xyz tatata befehl etc.
    }
    else
    {
    SendClientMessage(playerid,rot,"Du kannst nur eine Mine legen");
    }

    Also ich will ein Minenscript machen.


    Hier mal der auszug aus dem script


    new mine;


    #define rot 0xFF0000FF
    #define blau 0x0000FFFF



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mine", cmdtext, true) == 0)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,blau," Du kannst eine Mine nur ausßerhalb eines Fahrzeuges legen");
    }
    else
    {

    SendClientMessage(playerid,blau,"In 5 Sekunden wird die Mine scharf gemacht.");

    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    mine = CreatePickup(1654,3,x,y,z-0.5);
    return 1;
    }
    }
    return 0;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == mine)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    }
    else
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateExplosion(x,y,z+5,2,10);

    }
    }
    return 1;
    }


    So nun hab ich zwei bzw. drei Probleme


    1. Die Mine soll erst nach 5 Sekunden pickupable sein, damit der Minenleger nicht gleich eine gewischt bekommt.


    2. Die Entsethende Explosion funktioniert irgentwie nur ein mal.
    Und sobald man eine neue Mine erstelle, gibt es keine Eyplosion, also beim Aufnehmen der Mine. Das soll aber anders sein, so dass es immer bei jeder mine eine Explosion gibt.


    3. Welche Eyplisionsart und welchen Radius würdet ihr empfehlen, dass auch alle Autos und Personen in der Nähe was abbekommen bzw. Sterben


    Freue mich schon auf schnelle Hilfe, so wie immer hier ^^ :D

    Der Command funktioniert bis public respaw2() auf jeden fall weil mir der Contown-Text bis Respawn in 1 angezeit wird.
    Also muss mit dem Befehl was nicht stimmen.


    Okai funktioniert alles und beim Carrespawn war ein return 1; zu viel :P

    Nun endlich ist mein erstes richtiges Gamemode fertig gestellt.


    Team - Deathmatch - San Fierro [ GAMEMODE]

    Teams

    -Police:
    Befindet sich im SFPD und hat 3 Skins zur Auswahl ( Cop, SWAT , FBI )
    Verfügbare Vehicle :
    SFPD 7
    Enforcer 4
    FBI Ranger 8
    Wasserwerfer Entfernt
    SAPD Transporter 2
    Patriot 4
    Maverick SAPD 2
    Gesamt : 27 Vehicle
    Autofarbe: Schwarz-Weiß bzw. Blau


    -Mafia:
    Befindet sich auf einem Firmengelände im Süden von San Fierro und hat ebenfalls 3 Gangster Skind zur Auswahl.
    Verfügbare Vehicle:
    Club 2
    Flash 2
    Euros 2
    Alpha 2
    Sultan 2
    Jester 2
    Uranus 2
    Maverick 2
    Burrito 4
    Gesamt: 22 Vehicle
    Autofarbe: weiß


    Beschreibung

    Die Teamsversuchen sich gegenseitig abzuschießen


    Befehle


    /help = Zeigt Regeln,Befehle und eine Beschreibung


    /police = Öffnet für die Polizei das Policetor


    /mafia = Öffnet für die Mafia das Mafiator


    /weapons = Zieht dem spieler 5000 $ ab und gibt ihm eine M4 (999), UZI (999), Shotgun (999), Desert Eagle (999), Katana (1), Schlagring (1)


    Besonderheiten

    - Die Teams können nur ihre eigenen Autos benutzen


    -Beide Teams haben die Möglichkeit per Knopfdruck (Pickup) ihr Tor zu öffnen. Empfiehlt sich für mehrere Spieler


    - Es befinden sich in den HQs, und für alle zugänglich, ein Lebens und Armor Upgrade (Pickup)


    - Der Server kann per /endround neu gestartete werden, sofern man alsAdmin eingeloggt ist. Es beginnt ein 10 Sekunden Countdown.


    - Die Autos respawnen erst wenn sie zerstört werden
    oder
    - Man per /carrespawn , als Admin, die Autos auf ihren Ursprungsplatz setzt


    - Eine Nachricht von wem man getötet wurde.


    - Eine Nachricht wen man getötet hat.


    - Bei Tot verliert man 2500 $


    - Wenn man jemanden abschießt bekommt man 5000 $

    Nachteile

    - Kein Register System Mit Version 4 gibt es ein Register System


    Version 2

    Version 2 ist nun fertig und hochgeladen.


    - Ein paar Bugs wurden behoben
    - Ein Admin-Login-System wurde eingefügt
    - Admin-Health ( Admin ist wenn er duty ist unsterblich )
    - Man kann nun als Beifahrer in gegnerische Autos

    - Join / Leave Nachricht wurde eingefügt
    - Kick-Nachrichten nun mit Namensangaben
    - Neues Anti- Waffencheat
    - Wasserwerfer der Police durch FBI Ranger ersetzt


    Version 3

    Version 3 ist nun fertig und hochgeladen.


    - Kleinere Bugfixes.
    - Adminleben-System wurde gefixt.
    - Es gibt nun Adminbefehle --> /adminlogin --> /ah.
    - Der Marker zum Gegner wurde auf Radius 0 gesetzt. Nun stört er nicht mehr.
    - Versionstextdraw eingefügt
    - Nach 3 mal Teamkill wird man auto. gekickt.
    - Ein Votingsystem für Wetter und Uhrzeit



    Version 4 BETA

    Version 4 BETA ist nun fertig und hochgeladen.


    - Kleinere Bugfixes
    - Votingsystem entfernt
    - Mitloggen fast aller Commands und Chats in der server.log Datei
    - Einige Commands mit SSCANF ausgebaut
    - Neue Admin-Commands --> /ah
    - Registersystem mit Speicherung der Kills, Tode, Admin, Warn, Geld, Prison, Ban
    - Adminbase mit Adminfahrzeugen
    - Admin-Chat
    - Team-Chat
    - World Boundries um SF


    Version 4

    Version 4 ist nun fertig und hochgeladen.


    - Adminlevel 2 hinzugefügt. Befehle /endround /carrespawn /ban /warn /makeadmin nur für diesen Admin-Level
    - Script nun auf SAMP-Version 0.3
    ---------------------------------


    (C)opyright by Hagi.
    Für Privatzwecke erlaubt.
    Bei Anderen Zwecken bitte mit mir abklären.


    Downloadlink: Mafia-Police V4
    Pastebin : Mafia-Police V 4
    Dini.inc : Dini.inc


    Screens: Entschuldigt das der Player so komisch aussieht, aber ich hab keine Nvida Graka.














    Also ganz oben


    forward respawn5();
    forward respawn4();
    forward respawn3();
    forward respawn2();
    forward respawn1();


    dann bei PlayerCommand


    f(strcmp("/carrespawn",cmdtext, true) == 0)
    {
    if(IsPlayerAdmin(playerid) == 1)
    {
    GameTextForAll("Die Autos werden in 5 Sekunden auf Respawn gesetzt",1000,5);


    SetTimer("respawn5",1000,0);
    }
    else
    {
    SendClientMessage(playerid, rot, "Du bist nicht autorisiert um diesen Befehl ausführen zu können");
    return 1;
    }
    }


    return 1;


    und dann unten


    public respawn5()
    {
    GameTextForAll("Die Autos werden in 4 Sekunden auf Respawn gesetzt",1000,5);
    SetTimer("respawn4",1000,0);
    }


    public respawn4()
    {
    GameTextForAll("Die Autos werden in 3 Sekunden auf Respawn gesetzt",1000,5);
    SetTimer("respawn3",1000,0);
    }


    public respawn3()
    {
    GameTextForAll("Die Autos werden in 2 Sekunden auf Respawn gesetzt",1000,5);
    SetTimer("respawn2",1000,0);
    }


    public respawn2()
    {
    GameTextForAll("Die Autos werden in 1 Sekunden auf Respawn gesetzt",1000,5);
    SetTimer("respawn1",1000,0);
    }


    public respawn1()
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    SetVehicleToRespawn(v);
    return 1;
    }
    return 1;
    }

    Also ich habe vor einiger Zeit schon mal gefragt und eine Antwort bekommen sie auch funktioniert hat.
    Aber irgentwie funktioniert sie jetzt nicht mehr.


    Außer dem hier hab ich nix anderes für den Carrespawn drin


    public respawn1()
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    SetVehicleToRespawn(v);
    return 1;
    }
    return 1;
    }


    Weiß vileicht woran es liegen kann das es nicht mehr funktioniert.
    Hab ich vieleicht ausversehen was gelöscht, kann das sein ?


    Desweiteren bekommt man wenn man jemanden tötet diese Nachricht


    new string[256], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "Du hast --> %s <-- umgebracht", name);
    GameTextForPlayer(killerid,string,3000,3);


    nun soll auch derjenige der getötet wurde eine Nachricht bekommen


    new string2[256], name2[MAX_PLAYER_NAME];
    GetPlayerName(killerid, name, sizeof(name2));
    format(string2, sizeof(string), "Du wurdest von --> %s <-- umgebracht", name2);
    GameTextForPlayer(playerid,string,3000,3);


    Das Problem ist nur das dann bei den der getötet wurde steht, dass er von sich selber getötet wurde.
    Weiß einer woran das liegt?


    Wäre toll wenn ihr mir helfen könnet.

    Also hier der script-schnipsel


    // Police
    new newcarp = GetPlayerVehicleID(playerid);
    new carmodelp = GetVehicleModel(newcarp);
    if(carmodelp == 497 || carmodelp == 427 || carmodelp == 490 || carmodelp == 601 || carmodelp == 470 || carmodelp == 528 || carmodelp == 597 )
    {
    if(gTeam[playerid] == TEAM_POLICE)
    {
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,rot,"Du bist nicht Teil der Polizei");
    }
    }


    return 1;



    // Mafia



    new newcarm = GetPlayerVehicleID(playerid);
    new carmodelm = GetVehicleModel(newcarm);
    if(carmodelm == 602 || carmodelm == 589 ||carmodelm == 587 || carmodelm == 565 || carmodelm == 560 || carmodelm == 559 || carmodelm == 558 || carmodelm == 487 || carmodelm == 482 )
    {
    if(gTeam[playerid] == TEAM_MAFIA)
    {
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,rot,"Du bist nicht Teil der Mafia");
    }
    }


    return 1;


    Und zwar funktioniert die erste abfrage. Und die MAfia kann auch nicht in die Police Cars rein.
    Aber die zeite abfrage funktioniert nicht obwolh sie eigentlich genau so geschrieben wurde, bis auf die benennung.


    der Error ist

    Zitat

    unreachable code

    und zwar hier an dieser Stelle


    new newcarm = GetPlayerVehicleID(playerid);


    weiß einer wie ich das beheben kann ?

    Eine Möglichkeit kann sein, dass du eine andere Version des Client hast als der Server ist.


    Beispiel du hast 0.2x client under der server ist 0.2.2 ( glaube so ein gabs mal)
    Überprüf das mal

    Zitat

    gamemodes\Mafia-Police.pwn(502) : warning 219: local variable "newcar" shadows a variable at a preceding level
    gamemodes\Mafia-Police.pwn(520) : warning 225: unreachable code
    gamemodes\Mafia-Police.pwn(792) : warning 203: symbol is never used: "newcar"

    Funzt immer noch net


    Und hab nur 1 mal oben new newcar;