In CMD ausgelesene PlayerID variable weitergeben an Public

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
  • Also, Ich hab einen CMD, wir nennen ihn jetzt mal "testcmd" hinter den wird eine ID gesetzt für einen Player, diese wird ausgelesen und weitergegeben an den rest des CMD:


    C
    if(!strcmp(strget(cmdtext,0),"/testcmd"))
    	{
    	if(IsPlayerCop(playerid))
    			{
    			new ziel = strval(strget(cmdtext,1));
    
    				if(strlen(strget(cmdtext,1)))
    					{
    Sendclientmessage blbla, is ja erstmal egal[...]


    Diese ausgelesene Playerid möchte ich nun an eine Public weitergeben, bloß wie? ich hab ja im CMD die variable "ziel" mit der playerid bestügt, wenn ich jetzt versuche die in der public wieder auszulesen scheitere ich:


    C
    public setpos()
    {
    SetPlayerPos(ziel,x,y,z);
    }


    wie macht man sowas?
    danke für hilfe ;D

    Mfg kony




  • Du gibst das einfach weiter in deine Funktion (wie SetTimerEx).
    zB  
    new ziel = strval(strget(cmdtext,1));
    TuDiesUndDas(ziel);

    Du musst natürlich die Funktion selber "definieren",
    d.h.

    public TuDiesUndDas(playerid) {
    SendClientMessage(playerid,rot," Irgendetwas");
    return 1;
    }
    Entweder du machst es mit "public ...." und oben im Script "forward TuDiesUndDas(playerid);" oder du ersetzt die beiden Wörter durch ein @. Du kannst auch alles weglassen,
    doch muss dann der Code (TuDiesUndDas(playerid) {}) bevor du ihn wirklich verwendest erscheinen im Script (d.h. weiter oben). Zudem brauchst du beim "public/forward/@/...."
    nicht unbedingt playerid schreiben...ist ja nur ein Integerwert, der übergeben wird. Wenn du einen String weitergibst, sehe das so aus:
    @ TuDiesUndDas(playerid,strong[]) {}

    Hoffe,dass das richtig war, sonst soll mich ein Meister verbesser ;>.

  • Ich geb dir mal den Kompletten Code, da siehste das das ne so geht wiede das sagst...


    if(!strcmp(strget(cmdtext,0),"/drag"))
    {
    if(IsPlayerCop(playerid))
    {
    new ziel = strval(strget(cmdtext,1));

    if(strlen(strget(cmdtext,1)))
    {
    postimer = SetTimer("setpos",1000,true);
    }
    else
    {
    //SendServerMessage(playerid,"Benutze: /givelic <playerid>.");
    }


    }
    else
    {
    //SendServerMessage(playerid,"Du bist kein Licenser.");
    }
    }


    public setpos()
    {
    for(new i = 0;i < MAX_PLAYERS; i++)
    {

    new Float:x,Float:y,Float:z;
    GetPlayerPos(i,x,y,z);
    SetPlayerPos(ziel,x,y,z);
    }

    }


    (wehe es klaut jemand meine überlegungen für diesen befehl!!!)

    Mfg kony




  • Hast du dir meins auch durchgelesen?

    Sinn? Wie gesagt, du brauchst (damit nur 1 User geportet wird bzw. 1 ID übergeben wird) SetTimerEx ( http://wiki.sa-mp.com/wiki/SetTimerEx ).
    Verstanden? Wenn etwas (wie String,Integerwert/PlayerID,Float,..) weitergegeben werden soll, musst du - wie ich schonmal gesagt habe - es auch angeben, durch zB
    (einfache Funktion): DiesUndJenes(playerid)
    ( TimerEx ) SetTimerEx("DiesUndJenes",1000,0,"i",playerid);

  • Wenn das "ziel" geportet werden soll: (weiß nicht genau, was du willst/meinst)

    // Ganz oben
    @setpos(playerid);


    // Timer
    postimer = SetTimerEx("setpos",1000,0,"i",ziel);


    //Irgendwo im Script außerhalb eines CallBacks
    @setpos(playerid)
    {
    SetPlayerPos(playerid,X,Y,Z);
    return 1;
    }

    Einmal editiert, zuletzt von KornChief ()