Virtual World jewals mit andern Objecten und Funktionen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Community.


    Allso ich wollte 3 verschiedene Virtual Welten machen z.b so


    Stunt welt = Vw 0
    Freeroam Welt = Vw 1
    DM Welt = Vw 2
    Derby Welt =Vw 3


    aber so das z.b die Objecte aus der Stunt Welt so wie Rampen, Autos u.s.w nicht in der Freeroam Welt sind,
    das dan in der Freeroam Welt an ganz bestimmten orten nur Autos sind.


    Und das man in der Freeroam welt ist das man da Waffen verwenden kann z.b mit nem Player cmd /w [waffen id ].


    Allso meine Frage wie mache ich am besten die Virtual worlds mit eigenen Objecten und das man in jeder Vw nur Bestimmte Player Commandos verwenden kann ?.



    Hoffe um Hilfe
    Da ich noch nicht so viel Erfahrung mit dem Scripten habe
    ;(


    Danke schon mal im voraus.

  • Guck mal im Forum es wurde ein Gameode veröffentlicht der 4 Welten hat(SO heißt er auch) guck dir die Struktur da an und dann verstehst du wie man soewtas macht.

    Meine Werke:
    Filterscript/Map BSN Drivein und Parkplatz


    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig !
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • Hab dir hier einen kleinen Codeschnippsel mit erklärungen gemacht ^^ Zwar ist es ungetstet, müsste jedoch funktionieren!


    new PlayerObject[MAX_PLAYERS][MAX_OBJECTS];
    new CurrentVWPlayer=INVALID_PLAYER_ID;


    DeleteOldPlayerObjects(playerid)
    {
    for(new object;object!=GetPVarInt(playerid,"PlayerObjectsCreated");object++)
    {
    if(PlayerObject[playerid][object]==0) continue;
    DestroyPlayerObject(playerid,PlayerObject[playerid][object]); PlayerObject[playerid][object]=0;
    }
    DeletePVar(playerid,"PlayerObjectsCreated");
    return true;
    }
    RW_CreatePlayerObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ)
    {
    new counter=GetPVarInt(playerid,"PlayerObjectsCreated"),playerid=CurrentVWPlayer;
    PlayerObject[playerid][counter]=CreatePlayerObject(playerid,modelid,X,Y,Z,rX,rY,rZ);
    SetPVarInt(playerid,"PlayerObjectsCreated",counter+1); CurrentVWPlayer=INVALID_PLAYER_ID;
    return PlayerObject[playerid][counter];
    }
    #define CreateObject RW_CreatePlayerObject


    forward public OnPlayerVirtualWorldChange(playerid,oldvw,newvw);
    forward CheckVirtualWorldForPlayer();


    public OnPlayerVirtualWorldChange(playerid,oldvw,newvw)
    {
    CurrentVWPlayer=playerid;
    DeleteOldPlayerObjects(playerid);
    switch(newvw) //Überprüft zu welcher Virtuellen Wert er gesetzt hat
    {
    case 0: //Wenn die neue Virtuelle Welt 0 ist, dann...
    {
    //Hier fügst du die Objecte im CreateObject Stil ein, welche für den Spieler angezeigt werden sollen
    //wenn er in der VirtuellenWelt 0 ist...
    }
    case 1: //Wenn die neue Virtuelle Welt 1 ist, dann...
    {
    //Das gleiche gilt für das obige, nur für die VirtuelleWelt 1, usw...
    }
    case 2: //Wenn die neue Virtuelle Welt 2 ist, dann...
    {

    }
    case 3: //Wenn die neue Virtuelle Welt 3 ist, dann...
    {

    }
    //usw ^^
    }
    return true;
    }


    public CheckVirtualWorldForPlayer()
    {
    for(new playerid;playerid!=MAX_PLAYERS;playerid++)
    {
    if(!IsPlayerConnected(playerid)) continue;
    if(GetPVarInt(playerid,"PlayerVW")!=GetPlayerVirtualWorld(playerid))
    {
    CallLocalFunction("OnPlayerVirtualWorldChange","ddd",playerid,GetPVarInt(playerid,"PlayerVW"),GetPlayerVirtualWorld(playerid));
    SetPVarInt(playerid,"PlayerVW",GetPlayerVirtualWorld(playerid));
    }
    }
    return true;
    }


    public OnGameModeInit()
    {
    SetTimer("CheckVirtualWorldForPlayer",2500,true);
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Hab gerade einen Denkfehler im code gefunden, also bitte ersetze die unteren zwei Funktionen!


    RW_CreatePlayerObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ)
    {
    new counter=GetPVarInt(playerid,"PlayerObjectsCreated"),playerid=CurrentVWPlayer;
    PlayerObject[playerid][counter]=CreatePlayerObject(playerid,modelid,X,Y,Z,rX,rY,rZ);
    SetPVarInt(playerid,"PlayerObjectsCreated",counter+1);
    return PlayerObject[playerid][counter];
    }
    #define CreateObject RW_CreatePlayerObject


    public OnPlayerVirtualWorldChange(playerid,oldvw,newvw)
    {
    CurrentVWPlayer=playerid;
    DeleteOldPlayerObjects(playerid);
    switch(newvw) //Überprüft zu welcher Virtuellen Wert er gesetzt hat
    {
    case 0: //Wenn die neue Virtuelle Welt 0 ist, dann...
    {
    //Hier fügst du die Objecte im CreateObject Stil ein, welche für den Spieler angezeigt werden sollen
    //wenn er in der VirtuellenWelt 0 ist...
    }
    case 1: //Wenn die neue Virtuelle Welt 1 ist, dann...
    {
    //Das gleiche gilt für das obige, nur für die VirtuelleWelt 1, usw...
    }
    case 2: //Wenn die neue Virtuelle Welt 2 ist, dann...
    {

    }
    case 3: //Wenn die neue Virtuelle Welt 3 ist, dann...
    {

    }
    //usw ^^
    }
    CurrentVWPlayer=INVALID_PLAYER_ID;
    return true;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ja ok habe ich gemacht aber ich kann nicht Compiliren


    weil bei mir in zeile 18.


    #include <a_samp>


    new PlayerObject[MAX_PLAYERS][MAX_OBJECTS];
    new CurrentVWPlayer=INVALID_PLAYER_ID;


    DeleteOldPlayerObjects(playerid)
    {
    for(new object;object!=GetPVarInt(playerid,"PlayerObjectsCreated");object++)
    {
    if(PlayerObject[playerid][object]==0) continue;
    DestroyPlayerObject(playerid,PlayerObject[playerid][object]); PlayerObject[playerid][object]=0;
    }
    DeletePVar(playerid,"PlayerObjectsCreated");
    return true;
    }
    RW_CreatePlayerObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ)
    {
    new counter=GetPVarInt(playerid,"PlayerObjectsCreated"),playerid=CurrentVWPlayer;
    PlayerObject[playerid][counter]=CreatePlayerObject(playerid,modelid,X,Y,Z,rX,rY,rZ);
    SetPVarInt(playerid,"PlayerObjectsCreated",counter+1); CurrentVWPlayer=INVALID_PLAYER_ID;
    return PlayerObject[playerid][counter];
    }



    Sagt er mir .. Zeile (18 :( Unbekannte Variable : "playerid"


    habe ich irgentwas vergessen ?

  • new counter=GetPVarInt(CurrentVWPlayer,"PlayerObjectsCreated"),playerid=CurrentVWPlayer;


    hab ich wohl auch übersehen, sry ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • //Edit


    ist nicht so schlimm.
    jetzt konnte ich es erfolgreich Compiliren 0 errors 0 warnungen
    :thumbup:


    werde es jetzt ingame testen :D


    und Vielen Herzlichen Dank


    Muss doch noch mal um Hilfe fragen


    Alles klapt so wie in den Vw welten hin und her zu gehen ,
    die Autos werden auch super an gezeigt


    Jetzt kommt das aber die Objecte so wie die rampen und so werden nicht angezeigt :(
    das problem hatte ich schon mal weil die objecte bei mir nicht über CreateObject geladen werden
    nur über Streamer allso so CreateDynamicObject


    das hatte ich total vergessen ;(


    wie bekomme ich das jetzt hin das es über den Streamer geladen wird ?
    oder würde das nicht funktionieren ?

  • Bei deinem Streamer ist diese Sache was ich dir programmiert habe integriert und ich würde dir auch daher empfehlen die StreamerVariante zu verwenden ^^


    Also habe theorethisch mir oben umsonst Mühe gemacht, da ich ned wusste, ob du nen Streamer benützt oder nicht ^^


    Hier ist die native von deiner Funktion:


    native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0);


    und wie man sehen kann, musst du nur die worldid nach der Rotation in der Z-Achse (rz) setzen ^^.


    CreateDynamicObject(1232,0,0,0,0,0,0,3); //Setzt für alle Spieler das Object mit dem Model 1232, wenn Sie in der 3. VW sind


    aus diesem Grunde, kannst du dann auch gleich meine Sachen aus deinem Script löschen, da sie sonst in Konflikt miteinander kommen.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen