Beiträge von Lord_November

    CMD ist ein Befehl / Command


    Ich habe das Problem aber immer noch.....


    Die neuen Spieler können leider ohne Führerschein alle Fahrzeuge fahren und klauen.
    Wenn ich RemovePlayerFromVehicle(playerid); benutze können neue Spieler
    keine Motorroller benutzen. Ich nutze kein GF-MOD !


    Der Fehler muss hier sein:
    if(PlayerInfo[playerid][pDriving] != 1 && newstate == PLAYER_STATE_DRIVER)
    {
    if(vehicleid == 462 || vehicleid == 448 || vehicleid == 509 || vehicleid == 481 || vehicleid == 510)
    {
    SendClientMessage(playerid, COLOR_GREEN, "Du darfst dieses Fahrzeug ohne Führerschein fahren!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast keinen Führerschein!");
    RemovePlayerFromVehicle(playerid);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(IsPlayerConnected(j))
    {
    if(PlayerInfo[j][pJob] == POLIZEI)
    {
    SendClientMessage(j, COLOR_RED, "Jemand fährt ohne Führerschein!");
    SendClientMessage(j, COLOR_RED, "Wurde auf der Karte markiert!");
    SetPlayerMarkerForPlayer(j, playerid, 0xF600F6F6);
    }
    }
    }
    return 1;
    }
    }
    }

    mach doch fraktions cars, also die von der fahrschule. Un dann fragst du ab ob es cars von der fahrschule sin. Wenn ja, nit rauswerfen, wenn nein, rauswerfen ;)


    Mein GameMod benutzt ein externes Car-System, also die Fahrzeuge sind nicht im Script gespeichert,
    sondern im Ordner Cars. Das Script habe ich gekauft und so gut scripten kann ich auch nicht.

    Die neuen Spieler können leider ohne Führerschein alle Fahrzeuge fahren und klauen.
    Wenn ich RemovePlayerFromVehicle(playerid); benutze können neue Spieler nicht
    in die Fahrschulautos einsteigen und keine Motorroller benutzen
    . Ich nutze kein GF-MOD !


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(CarInfo[GetPlayerVehicleID(playerid)][cGas]<=0 && CanExit[playerid]==false)
    {
    new Model = GetVehicleModel(GetPlayerVehicleID(playerid));
    if(Model != 509 && Model != 510 && Model != 481)
    {
    SendClientMessage(playerid, COLOR_RED, "Dein tank ist leer mache /adac!");
    TogglePlayerControllable(playerid, false);
    CanExit[playerid]=true;
    return 0;
    }
    }
    if(PlayerInfo[playerid][pDriving] != 1 && newstate == PLAYER_STATE_DRIVER)
    {
    if(vehicleid == 462 || vehicleid == 448 || vehicleid == 509 || vehicleid == 481 || vehicleid == 510)
    {
    SendClientMessage(playerid, COLOR_GREEN, "Du darfst dieses Fahrzeug ohne Führerschein fahren!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast keinen Führerschein!");
    RemovePlayerFromVehicle(playerid);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(IsPlayerConnected(j))
    {
    if(PlayerInfo[j][pJob] == POLIZEI)
    {
    SendClientMessage(j, COLOR_RED, "Jemand fährt ohne Führerschein!");
    SendClientMessage(j, COLOR_RED, "Wurde auf der Karte markiert!");
    SetPlayerMarkerForPlayer(j, playerid, 0xF600F6F6);
    }
    }
    }
    return 1;
    }
    }
    }

    Du musst aber noch abfragen ob der in der DM zone is, un nit einfach bei OnPlayerDeath auf 1 stellen ;)


    Das habe ich doch schon alles hier drinnen.


    if(DM[playerid]==DM_TYPE_TDM) // Abfrage für Deathmatch-Zone
    return SetPlayerTDMSpawn(playerid); // Re-Spawn in Deathmatch-Zone


    Es funktioniert aber werder unter OnPlayerDeath auch nicht unter OnPlayerSpawn.
    Alles anderwe funktioniert, der Spieler kommt /tdm in die Deathmatch-Zone rein und auch wieder raus
    Nur den Re-Spawn nach dem Tot in die Deathmatch-Zone bekomme ich nicht hin, alles andere geht.


    Danke die Koordinaten und welches Deathmatch-Team sind ja schon in SetPlayerTDMSpawn(playerid) drinnen.
    Nur den Respawn nach dem Tot in der Deathmatch-Zone bekomme ich nicht hin, alles andere funktioniert. Der Spieler
    kommt mit /tdm in die Deathmatch-Zone und auch wieder raus, er sollte aber wenn er erschossen wird automatisch wieder
    dort landen.

    Wenn die Spieler in der Deathmatch-Zone sterben landen sie immer wieder an ihrem House-Spawn in
    der Virtualworld 1. Sie sollen aber nach ihrem Tot wieder in der Deathmatch-Zone (Virtualworld 1)
    landen. Ich probiere es jetzt schon seit zwei Wochen, aber ich schaffe es nicht. Kann mir viellecht hier
    jemand einen Tip geben ?


    public OnPlayerSpawn(playerid)
    {
    if(DM[playerid]==DM_TYPE_TDM) // Spawn in Deathmatch-Zone
    return SetPlayerTDMSpawn(playerid); // Spawn in Deathmatch-Zone
    SetPlayerInterior(playerid,PlayerSpawnInterior[playerid]);
    SetPlayerHealth(playerid, 100.0);
    SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
    if(PlayerInfo[playerid][pHP] > 1.0) SetPlayerHealth(playerid, PlayerInfo[playerid][pHP]);
    else { SetPlayerHealth(playerid, 100.0); }
    PlayerInfo[playerid][pDuty] = false;
    ResetPlayerWeapons(playerid);
    for(new j = 0; j < 13; j++)
    {
    if(IsValidWeapon(PlayerInfo[playerid][pGun][j]))
    GivePlayerWeapon(playerid, PlayerInfo[playerid][pGun][j], PlayerInfo[playerid][pAmmo][j]);
    }
    SetTimerEx("SetPlayerSpawn", 3000, false, "i", playerid);
    TextDrawShowForPlayer(playerid, Textdraw1);
    if(IsPlayerNPC(playerid)) return 1;
    return 1;
    }

    Habe den Fehler gefunden:


    ich habe: GivePlayerMoney(playerid, -hInfo[playericonhouse[playerid]][Cost]);


    ersetzt durch: PlayerInfo[playerid][pCash]-=hInfo[playericonhouse[playerid]][Cost];


    Jetzt geht es...


    Da kam nicht mal Frettchen (alias Blitz) drauf, der kennt das ganze Script, aber mehr als
    ich kann der auch nicht, Paste und Kopy halt.............
    und der wollte für mich scripten. Schätze morgen hat der wieder einen anderen Namen hier.

    Wenn ich im Haus-Icon stehe und /kauf eingebe, wird der Betrag abgezogen und sofort wieder gutgeschrieben.
    Wenn ich im Haus-Icon stehe und /verkauf eingebe, wird der Betrag gutgeschrieben und sofort wieder abgezogen.
    Mit /buy und /sell war es auch so. Wo liegt hier der Fehler ?


    dcmd_verkauf(playerid,params[])
    {
    #pragma unused params
    new timestamp = GetTickCount();
    if(timestamp - inhousepickup[playerid] > 5000)
    {
    SendClientMessage(playerid, c_r, "Du bist nicht in einem Haus Icon!");
    return 1;
    }
    new str[255],str1[256],pname[24];
    GetPlayerName(playerid, pname, 24);
    format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
    if (strcmp(hInfo[playericonhouse[playerid]][Name],pname,false)) return SendClientMessage(playerid, c_r, "Das ist nicht Dein Haus!");
    SendClientMessage(playerid, c_y, "Du hast Dein Haus verkauft!");
    format(str, sizeof(str), "%s has sold houseid 0",pname);
    print(str);
    GivePlayerMoney(playerid, hInfo[playericonhouse[playerid]][Sell]);
    dini_Set(str1, "Name", "ForSale");
    hInfo[playericonhouse[playerid]][Locked] = dini_IntSet(str1,"Locked",0);
    format(hInfo[playericonhouse[playerid]][Name],255,"ForSale");
    format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
    if (!dini_Exists(str1)) dini_Create(str1);
    dini_IntSet(str1, "Houseid", -255);
    DestroyPickup(HousePickup[playericonhouse[playerid]]);
    HousePickup[playericonhouse[playerid]] = CreatePickup(1273, 23, hInfo[playericonhouse[playerid]][iconx], hInfo[playericonhouse[playerid]][icony], hInfo[playericonhouse[playerid]][iconz]);
    RemovePlayerMapIcon(playerid, housemapicon[playerid]);
    return 1;
    }


    dcmd_kauf(playerid,params[])
    {
    #pragma unused params
    new timestamp = GetTickCount();
    if(timestamp - inhousepickup[playerid] > 5000)
    {
    SendClientMessage(playerid, c_r, "Du bist nicht in einem Haus Icon!");
    return 1;
    }
    new str[255],str1[255],pname[24];
    GetPlayerName(playerid, pname, 24);
    format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
    if(dini_Exists(str1))
    {
    if (dini_Int(str1, "Houseid")!=-255) return SendClientMessage(playerid, c_r, "Du kannst nur ein Haus kaufen!");
    }
    format(str1, sizeof(str1), "Houses/houseid%d", playericonhouse[playerid]);
    if (strcmp(hInfo[playericonhouse[playerid]][Name],"ForSale",true)) return SendClientMessage(playerid, c_r, "Haus ist nicht zu verkaufen!");
    if(GetPlayerMoney(playerid)<hInfo[playericonhouse[playerid]][Cost]) return SendClientMessage(playerid, c_r, "Du hast nicht genug Geld!");
    SendClientMessage(playerid, c_y, "You have bought the house!");
    format(str, sizeof(str), "%s has bought houseid 0",pname);
    print(str);
    GivePlayerMoney(playerid, -hInfo[playericonhouse[playerid]][Cost]);
    dini_Set(str1, "Name", pname);
    hInfo[playericonhouse[playerid]][Name]=pname;
    hInfo[playericonhouse[playerid]][Locked] = dini_IntSet(str1,"Locked",0);


    format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
    if (!dini_Exists(str1)) dini_Create(str1);
    new Float:sy, Float:sx, Float:sz;
    dini_IntSet(str1, "Houseid", playericonhouse[playerid]);
    if(!dini_Isset(str1,"Rentid"))
    {
    dini_IntSet(str1, "Rentid", -255);
    }
    GetPlayerPos(playerid, sx,sy,sz);
    dini_FloatSet(str1, "SpawnX", sx);
    dini_FloatSet(str1, "SpawnY", sy);
    dini_FloatSet(str1, "SpawnZ", sz);
    dini_IntSet(str1, "SpawnInt", GetPlayerInterior(playerid));
    DestroyPickup(HousePickup[playericonhouse[playerid]]);
    HousePickup[playericonhouse[playerid]] = CreatePickup(1272, 23, hInfo[playericonhouse[playerid]][iconx], hInfo[playericonhouse[playerid]][icony], hInfo[playericonhouse[playerid]][iconz]);
    return 1;
    }


    Danke, es funktioniert ! :) Nur der Spieler bewegt sich immer bei der Auswahl im Menü, das nervt ein wenig. :(
    Ich habe es jetzt so gemacht.
    public OnFilterScriptInit() {
    for(new playerid=0; playerid<GetMaxPlayers(); playerid++)
    {
    TogglePlayerControllable(playerid,1);
    }
    }
    public OnPlayerExitedMenu(playerid)
    {
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    Das habe ich gelöscht, weil es auch ohne dem geht:

    public OnGameModeExit()
    {
    DestroyMenu(navi1);
    DestroyMenu(navi2);
    DestroyMenu(navi3);
    TogglePlayerControllable(playerid,1);
    return 1;
    }

    Benutz einfach

    Spoiler anzeigen
    TogglePlayerControllable(playerid,1);


    MfG
    Ed_Hardy


    Sorry bin wohl zu blöd dazu. Wenn ich das Navigations Menü verlasse bin ich immr noch gefreezt.


    Code
    C:\Users\Rainer\Desktop\samp03asvr_win32\filterscripts\testmenu.pwn(158) : error 017: undefined symbol "playerid"
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.


    public OnGameModeExit()
    {
    DestroyMenu(navi1);
    DestroyMenu(navi2);
    DestroyMenu(navi3);
    TogglePlayerControllable(playerid,1);
    return 1;
    }


    Ein dickes Danke an Dich ! Wie konnte ich das übersehen ?
    Ist es korrekt, das pro Menü nur 12 Einträge möglich sind, aslo von 0 bis 11 ?

    Wenn ich /navi eingebe, erscheint im Navigation Menu 1 der erste Menüpunkt Drogendealer aus dem Navigation Menu 2.
    Im Navigation Menu 2 wird der Menüpunkt Drogendealer nicht angezeigt.
    Was mache ich falsch ?


    #include <a_samp>


    new Menu:navi1;
    new Menu:navi2;
    new Menu:navi3;


    #define COLOR_RED 0xAA3333AA
    #define COLOR_GREEN 0x33AA33AA


    public OnFilterScriptInit() {


    }


    public OnFilterScriptExit() {


    }


    public OnGameModeInit()
    {
    navi1=Menu:CreateMenu("~w~Navigation Menu 1",1,130,150,300);
    AddMenuItem(navi1,0," ADAC LS"); //0
    AddMenuItem(navi1,0," ADAC LV"); //1
    AddMenuItem(navi1,0," ADAC SF"); //2
    AddMenuItem(navi1,0," Biker"); //3
    AddMenuItem(navi1,0," Biker-Shop"); //4
    AddMenuItem(navi1,0," Boot-Job"); //5
    AddMenuItem(navi1,0," Taxifahrer LS"); //6
    AddMenuItem(navi1,0," Taxifahrer LV"); //7
    AddMenuItem(navi1,0," Post LS"); //8
    AddMenuItem(navi1,0," Post LV"); //9
    AddMenuItem(navi1,0," Post SF"); //10
    AddMenuItem(navi1,0," Navigation Menu 2"); //11

    navi2=Menu:CreateMenu("~w~Navigation Menu 2",1,130,150,300);
    AddMenuItem(navi1,0," Drogendealer"); //0
    AddMenuItem(navi2,0," navi 2");
    AddMenuItem(navi2,0," navi 3");
    AddMenuItem(navi2,0," navi 4");

    navi3=Menu:CreateMenu("~w~Navigation Menu 3",1,130,150,300);
    AddMenuItem(navi3,0," navi 1");
    AddMenuItem(navi3,0," navi 2");
    AddMenuItem(navi3,0," navi 3");
    AddMenuItem(navi3,0," navi 4");


    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    new Menu:Now;
    Now = GetPlayerMenu(playerid);
    if(Now == navi1) {
    TogglePlayerControllable(playerid,false);
    ShowMenuForPlayer(navi1,playerid);
    switch(row)
    {
    case 0: {
    SetPlayerCheckpoint(playerid,-79.9094,-1135.0229,1.0781,5); // ADAC LS
    ShowMenuForPlayer(navi1, playerid);
    }
    case 1: {
    SetPlayerCheckpoint(playerid,1886.0837,2339.3083,10.8203,5); // ADAC LV
    ShowMenuForPlayer(navi1, playerid);
    }
    case 2: {
    SetPlayerCheckpoint(playerid,-2226.6082,286.9214,35.3203,5); // ADAC SF
    ShowMenuForPlayer(navi1, playerid);
    }
    case 3: {
    SetPlayerCheckpoint(playerid,504.8405,-69.1731,998.7578,5); // BIKER PICKUP
    ShowMenuForPlayer(navi1, playerid);
    }
    case 4: {
    SetPlayerCheckpoint(playerid,2131.8550,-1150.1294,24.1917,5); // Biker Shop
    ShowMenuForPlayer(navi1, playerid);
    }
    case 5: {
    SetPlayerCheckpoint(playerid,-2190.0911,2414.0591,5.1563,5); // BOOT JOB
    ShowMenuForPlayer(navi1, playerid);
    }
    case 6: {
    SetPlayerCheckpoint(playerid,1771.2418,-1907.2025,13.5552,5); // Taxi HQ LS
    ShowMenuForPlayer(navi1, playerid);
    }
    case 7: {
    SetPlayerCheckpoint(playerid,1947.2200,2068.9106,10.8203,5); // Taxi LV
    ShowMenuForPlayer(navi1, playerid);
    }
    case 8: {
    SetPlayerCheckpoint(playerid,1117.9919,-1249.7778,15.9281,5); // Post LS
    ShowMenuForPlayer(navi1, playerid);
    }
    case 9: {
    SetPlayerCheckpoint(playerid,1680.8837,1760.2552,10.8285,5); // Post LV
    ShowMenuForPlayer(navi1, playerid);
    }
    case 10: {
    SetPlayerCheckpoint(playerid,-2522.6191,1214.9878,37.4283,5); // Post SF
    ShowMenuForPlayer(navi1, playerid);
    }
    case 11: {
    ShowMenuForPlayer(navi2, playerid);
    }
    }
    }

    if(Now==navi2) {
    TogglePlayerControllable(playerid,false);
    ShowMenuForPlayer(navi2,playerid);
    switch(row)
    {
    case 0: {
    SetPlayerCheckpoint(playerid,-2699.8394,1604.5452,3.2188,5); // DROGEN PICKUP
    ShowMenuForPlayer(navi1, playerid);
    }
    case 1: {
    SendClientMessage(playerid,COLOR_RED,"Menu 2 navi 2");
    }
    case 2: {
    SendClientMessage(playerid,COLOR_RED,"Menu 2 navi 3");
    }
    case 3: {
    SendClientMessage(playerid,COLOR_RED,"Menu 2 navi 4");
    }
    }
    }
    if(Now==navi3) {
    TogglePlayerControllable(playerid,true);
    switch(row) {
    case 0: {
    SendClientMessage(playerid,COLOR_RED,"Menu 3 navi 1");
    }
    case 1: {
    SendClientMessage(playerid,COLOR_RED,"Menu 3 navi 2");
    }
    case 2: {
    SendClientMessage(playerid,COLOR_RED,"Menu 3 navi 3");
    }
    case 3: {
    SendClientMessage(playerid,COLOR_RED,"Menu 3 navi 4");
    }
    }
    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    }


    public OnGameModeExit()
    {
    DestroyMenu(navi1);
    DestroyMenu(navi2);
    DestroyMenu(navi3);
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/navi", true)) {
    ShowMenuForPlayer(navi1, playerid);
    return 1;
    }
    return 0;
    }

    maxnpcs hochsetzen und Hirn einschalten.


    Das Problem ist, wir möchten gern die filterscripts mit den Bots laden können.
    In der server.cfg steht: maxnpc 20
    Im GameMode habe ich #include <a_npc> eigefügt. Wenn ich dann den Server
    starte, steht am Ende der server_log.txt:



    Nur erscheint dann keiner der Bots in der Player-Liste oder im Spiel.
    Muss ich da noch was in dem GameMode eintragen, ausser #include <a_npc>
    damit ich die filterscripts mit den Bots korrekt laden kann ?