Virtuall Welt 2 Fragen!

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
  • Guten Tag
    Ich habe heute ja ins Script Virtuall Worlds eingebaut!
    Mit /startfilm kann man in eine andere Welt, man muss halt /startfilm [Welt] machen
    Und wenn man in einer ist, kann man Leute da einladen, wenn man das macht sind die in der Welt
    also /einladen [ID]


    Nun würde ich gerne da 2 Dinge ändern, bekomme es aber ohne Fehler leider nicht hin


    1.
    wenn man /startfilm macht, soll man in eine Welt kommen, die durch Zufallsprinzip ausgewählt wird, damit es nicht so passiert das aufeinmal 2 Filme in 1 Welt sind, weil jemand zB /startfilm 1 macht und jemand anders dann auch /startfilm 1


    2.
    Es sollte so sein, dass wenn jemand jemanden mit /einladen einläd, er das mit /annehmen bestätigen muss


    CODES:


    1.
    dcmd_startfilm(playerid,params[])
    {


    if(sscanf(params, "d",welt))
    {
    return SendClientMessage(playerid,COLOR_GRAD1,"Fehler: /startfilm [Welt]");
    }


    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",playername,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }


    2.
    dcmd_einladen(playerid,params[])
    {
    new zielid;


    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,COLOR_GRAD1,"Fehler: /Einladen [ID]");
    }


    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,pworld);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich in seinen Film eingeladen!",playername,welt);
    format(string,sizeof(string),"Du hast Spieler %s in deinen Film eingeladen!",zielname,welt);
    SendClientMessage(playerid,COLOR_GREEN,string2);
    SendClientMessage(zielid,COLOR_GREEN,string);
    return 1;
    }


    Danke im vorraus!
    Wenn das geschafft ist, habe ich unser Movie Script endlich fertig so wie ich es wollte !


    Keiner eine Antwort?

  • Wofür machst du eigentlich 2 Tread auf ? http://forum.sa-mp.de/wbb/san-…-scriptfragen/#post218705
    Völlig unnötig



    if (strcmp("/makefilm", cmdtext, true, 10) == 0)
    {
    new welt = Random(50);
    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",playername,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }


    Das verhindert aber nicht, dass nicht doch 2 Filme in der gleichen Welt spielen können.
    Es kann ja sein, dass in beiden Fällen der Random den gleichen Wert hat


    Bei dem Anderen Problem muss ich erstmal noch ein bisschen überlegen

    Einmal editiert, zuletzt von Hagi ()

  • Mit PlayerID wäre das so


    if (strcmp("/makefilm", cmdtext, true, 10) == 0)
    {
    new welt = playerid
    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",playername,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }


    Probier mal ob das Funktioniert


    Wenn nicht probier mal das


    if (strcmp("/makefilm", cmdtext, true, 10) == 0)
    {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    welt = GetPlayerID(pname,1);
    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",pname,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }

  • ^hat keine Ahnung was er da eigentlich schreibt.


    < postet jetzt alles nochmal, aber hat das ganze natürlich nicht getestet und haftet nicht für Fehler.
    /* Globale Variable */
    new bool:gMovieMaking[MAX_PLAYERS];
    new gRequestingPlayer[MAX_PLAYERS];
    /* OnPlayerCommandText */
    if(!strcmp(cmdtext,"/makemovie"))
    {
    SetPlayerVirtualWorld(playerid, playerid);
    new l_str[128];
    GetPlayerName(playerid, l_str, sizeof l_str);
    format(l_str, sizeof l_str, "** %s (%d) hat einen Film gestartet. Benutze \"/request %d\" um eine Anfrage an ihn zu senden, dich einzuladen.", l_str, playerid, playerid);
    SendClientMessageToAll(0xFFAA00FF, l_str);
    gMovieMaking[playerid] = true;
    return 1;
    }


    /* dcmd Command */
    dcmd_request(playerid, params[])
    {
    if(!params[0]) return 1;
    if(strlen(params) > 3) return 1;
    new gTarget = strval(params);
    if(!IsPlayerConnected(gTarget)) return 1;
    if(gMakingMovie[gTarget] == false) return 1;
    gRequestingPlayer[gTarget] = playerid;
    return 1;
    }


    /* Nochmal OnPlayerCommandText */
    if(!strcmp(cmdtext,"/accept"))
    {
    if((gRequestingPlayer[playerid] == playerid) || !IsPlayerConnected(gRequestingPlayer[playerid])) return 1;
    SetPlayerVirtualWorld(gRequestingPlayer[playerid], GetPlayerVirtualWorld(playerid));
    return 1;
    }

  • ,,gMakingMovie´´ definiere das einfach mal als Spieler Variable bzw. Indexierte Variable


    new gMakingMovie[MAX_PLAYERS];


    vergiss die Variable nicht beenden des Gamemodes/Filterskripts zurückzustellen zum Ursprungswert

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Grad bemerkt wie das funtzt, geht es auch einfach so?


    Spieler "A" Startet Film
    Möchte das Spieler "B" mitmacht
    Also schreibt er /einladen "B"
    Spieler "B" muss nun nurnoch mit /accept bestätigen, wird zu Spieler "A" Teleportiert und ist in seiner Welt!


    Natürlich sollte "A" auch /startfilm machen können und die ID der Parallelwelt soll die selbe sein wie die ID von Spieler "A"


    Könnte jemand das so posten?
    Wäre lieb

    ONEV - Make Roleplay Great Again! | exotiicBro - Twitch Streams

    Einmal editiert, zuletzt von exotiicBro ()

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