Kann man damit eine NoDM zone erstellen??
Also das unten rechts ales TexDraw steht NoDm Zone?
wenn ja wie?
IsPlayerInArea
- Fabi.StaR
- Geschlossen
- Erledigt
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
-
-
Du brauchst einen Timer der alle x Sekunden ueberprueft ob er in der NoDm Zone ist.
und wenn ja dann halt nen textdraw erstellen bzw. anzeigen lassen
-
ein beispiel wäre net
-
Ein TImer und dan mit IsPlayerInArena und natürlich noch eine Schleife
-
Also unter den define i-wo
forward IsPlayerInNoDm();
dann bei OnGameModeInit:
SetTimer("IsPlayerInNoDm",1000,1);
und dann erstellst du dir folgendes (am besten ganz unten im script):
public IsPlayerInNoDm();
{
for(new i=0; i<GetMaxPlayers(); i++)//das ersetzt die playerid, da wir die hier nicht haben. i=playerid
{
if(/*IsPlayerInArea*/)
{
//wenn ja
}
else
{
//wenn nein
}
}
}Bei den TextDraws laest du dir am besten von der Website helfen: http://bsndesign.webs.com/tde.htm
hoffe mal dass das richtig ist und dir hilft
-
Wo kommt der Text Draw hin??
und wie kann ich mehrere machen? -
Der Textdraw wird bei OnGameMode init erstellt
und angezeigt wenn er in der zone ist, sowie ausgeblendet wenn er nicht in der zone ist
TextDrawShowForPlayer(i,/*Dein TextDrawName*/);
TextDrawHideForPlayer(i,/*DeinTextDrawName*/); -
-
Bei IsPlayerInArea musst du eine If abfrage einfuegen, die abfragt ob der spieler in der zone ist
-
hab ich :
public NoDmZoNe(playerid)
{
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerInArea(i,1052.4753,-1727.8063,1124.0238,-1816.8523))
{
TextDrawShowForPlayer(i,NoDM);
return 1;
}
else
{
TextDrawHideForPlayer(i,NoDM);
return 1;
}
}
return 1;
} -
undefined symoble "isplayerinarea" sagt dir, dass isplayerinare nicht gefunden wurde.
/E:
D.h du brauchst die Funktion "IsPlayerInArea" in deinem Script. -
Wo bekomme ich die her?
-
new float:PlayerPosX, float:PlayerPosY,float:PlayerPosZ;
GetPlayerPos(playerid,PlayerPosX,PlayerPosY,PlayerPosZ);
if(PlayerPosX>=/*Der niedriger gelegende punkt der area auf der x axe*/ && PlayerPosY>=/*Der niedriger gelegende punkt der area auf der x axe*/ && PlayerPosX<=/*hoeher gelegene punkt der area (x-achse)*/ && PlayerPosZ<=/*hoeher gelegene punkt der area (x-achse)*/)
{}
hoffe du verstehst das, wenn nicht guck mal hier vorbei: http://forum.sa-mp.com/showthread.php?t=222283 -
Wird net angezeig
ihr die codes:
new Text:Copyright;
forward NoDmZoNe();public OnGameModeInit()
{
SetTimer("NoDmZoNe",1000,1);
Copyright = TextDrawCreate(515 ,448 , "NoDm-Zone");
TextDrawFont(Copyright , 1);
TextDrawLetterSize(Copyright , 0.6, 4.2);
TextDrawColor(Copyright , 0xff0000FF);
TextDrawSetOutline(Copyright , false);
TextDrawSetProportional(Copyright , true);
TextDrawSetShadow(Copyright , 1);
return 1;
}public NoDmZoNe()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerInArea(i,1052.4753,-1727.8063,1124.0238,-1816.8523))
{
TextDrawShowForPlayer(i,Copyright);
}
else
{
TextDrawHideForPlayer(i,Copyright);
}
}
}IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
{
return 1;
}
return 0;
} -
Du musst in der Zone sein & mind. 1 Sek warten dann sollte es eig. gehen.
Sonst hast du was beim Textdraw falsch gemacht, dafuer gibts hier aber auch einen tutorial, wuesste sonst auch nicht weiter
-
Versuchs mal mirlt der print Methode bis wo es klappt..
-
Versuchs mal mirlt der print Methode bis wo es klappt..
was? ich berstehe net was du meinst
-
Also z.B immer wenn der Timer fertig ist printest du z.B eine nachrivht um den Timer zu testen wenn jemand in der Zone ist printest du das wenn nicht das nicht Si kannst du den Timrrer UND den textdraw prüfen
-
geht net
-
Du brauchst keine Schleife und kein Timer
kannst es genau so unter OnPlayerUpdate machen
bloß nicht mit i
if(IsPlayerInArea([u]playerid[/u],1052.4753,-1727.8063,1124.0238,-1816.8523))
{}