GTAvision.com - Forum - Grand Theft Auto News, Downloads, Community and more...

Position: Grand Theft Auto: San Andreas » Multiplayer » Scripte und kleine Codes » Admin/Sperr Zone » Druckansicht
Jermuk, 29.09.2008, 14:00
Hallo an alle,

ich habe ein Problem.
Kennt jemand ein Script, was eine Adminzone simuliert?
Dass heißt, ich habe eine Insel mit Tor und will, dass nur Admins (bzw. nur ich) dareinkönnen.
Dass Tor bietet ja nur Schutz bei Leuten die vom Boden aus kommen, aber was ist mit der Luft?
Ich habe mal probiert, das Area51 Racketen Script umzubauen, aber dass hat nicht funktioniert. Ich
würde mich über Hilfe sehr freuen!
Ich habe auch die SUFU benutzt, aber da war nur Liberty City als Admin Zone, aber ich wil einen
ganz normalen Fleck als AdminZone haben. Ist das möglich?
Danke im Voraus!

Gruß Jermuk

EDIT: Huch Sorry Falsches Forum!
Sh3LteR, 29.09.2008, 14:12
Benutz die Sufu, Recycler hat das mit der admin arena schon iwo gepostet...
Das mit den Toren, wurde im scriptfrage thread schonmal gepostet... benutz die SuFu, du wirst zu
100& fündig...
Jermuk, 29.09.2008, 14:17
ZitatJermuk hat folgendes geschrieben:

Ich habe auch die SUFU benutzt, aber da war nur Liberty City als Admin Zone, aber ich wil einen
ganz normalen Fleck als AdminZone haben. Ist das möglich?
ZitatZitat:


a) Ich hatte garnicht nach Toren gefragt!
b) Ich will ja nicht Liberty City sonder eine Insel als Adminzone

Gruß Kermuk
Sh3LteR, 29.09.2008, 14:31
Modifiziere den script und aus... wenn du nicht die grundlagen vom scripten kanns, dann lass es
lieber...
Jermuk, 29.09.2008, 14:36
Aber das Racketenscript hat von Anfang an nicht funktioniert!

Gruß Jermuk
Sh3LteR, 29.09.2008, 15:05
Admin Arena:
http://forum.gtavision.com/posts_51_461_1.html
Ganz oben...

MoveObjekt, also soein Tor:
http://forum.gtavision.com/index.php?action=redirect&loc=show_post&id=12017

Natürlich musst du alles an deinem script anpassen...
Jermuk, 29.09.2008, 16:02
Ohh, danke!
War mal wieder zu schnell und daher habe ich das Script nicht gesehen!!!
Danke funzt!

Gruß Jermuk
Jermuk, 30.09.2008, 19:40
Hallo an alle,

ich wollte in meinem SA:MP Server mal eine AdminArea machen wo nur ich (bzw. der Spieler Jermuk)
reinkönnen. Also hatte ich mich nach einem passenden Scriipt umgeschaut und hab auch etwas
gefunden. Ich hab es erweitert aber jetzt habe ich ein Problem. Der Compiler zeigt mir keine
Fehlermeldungen, aber wenn ich als Jermuk in den AdminZone gehe sterbe ich. Was ist los?

Hier der Code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <a_samp>
#define RED 0xE60000FF
#define GREEN 0x21DD00FF

new gAreaTime = 3000;
forward AdminArea(playerid);
new tmp = 100;
new string[256];
new i, Float:X, Float:Y, Float:Z;
new wahr;

stock PlayerName(i) {
   new name[MAX_PLAYER_NAME];
   GetPlayerName(i,name,MAX_PLAYER_NAME);
   return name;
}

public OnGameModeInit()
{
   SetTimer("AdminArea",gAreaTime,1);
   return 1;
}

public IsPlayerInVipZone(i)
{
    GetPlayerPos(i, X, Y, Z);
   if (X <= 206.71 && X >= 19.33 && Y <= 396.17 && Y >= 240.93)
   {
   wahr=1;
   return 1;
   }
   else
   {
   wahr=0;
   return 0;
   }
}

public AdminArea(playerid)

{
   for (i = 0; i < MAX_PLAYERS; i++)
       {

       IsPlayerInVipZone(i);
       if(strcmp(PlayerName(i),"Jermuk",true) && wahr==0 && tmp==0)
      {
          SendClientMessage(i,GREEN, "Bis Bald!");
          format(string, sizeof(string), "Bis Bald!");
         GameTextForPlayer(i,string,3000,3);
         tmp=100;
      }
      if (IsPlayerInVipZone(i))
         {
          if(strcmp(PlayerName(i),"Jermuk",true))
            {
               if (tmp!=i)
                   {
                      SendClientMessage(i,GREEN, "Willkommen im V.I.P. Bereich!");
                      format(string, sizeof(string), "Willkommen im V.I.P. Bereich!");
                     GameTextForPlayer(i,string,3000,3);
                        tmp=i;
                  }

            }

            else
            {
                format(string, sizeof(string), "Playername = %s",PlayerName(i)); // Unwichtig, bewei
st aber dass die Funktion PlayerName stimmen muss
                SendClientMessage(i,RED,string);
               SendClientMessage(i,RED,"Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
               format(string, sizeof(string), "Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
                GameTextForPlayer(i,string,5000,3);
               SetPlayerHealth(i,0);
            }
         }
        }
}


Vielen Dank schonmal im voraus,

Gruß Jermuk
dödel, 30.09.2008, 20:45
Ändere einfach
Code:
1
if(strcmp(PlayerName(i),"Jermuk",true))

in
Code:
1
if(strcmp(PlayerName(i),"Jermuk", true) == 0)
FloRaX, 30.09.2008, 20:51
Ich weiß nicht ob das jetzt funktioniert, aber probier es mal so:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?

#include <a_samp>
#define RED 0xE60000FF
#define GREEN 0x21DD00FF

new gAreaTime = 3000;
forward AdminArea(playerid);
forward IsPlayerInVipZone(playerid);
new tmp = 100;
new string[256];
new i, Float:X, Float:Y, Float:Z;
new wahr;

stock PlayerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}

public OnGameModeInit()
{
    SetTimer("AdminArea",gAreaTime,1);
    return 1;
}

public IsPlayerInVipZone(playerid)
{
    GetPlayerPos(playerid, X, Y, Z);
    if (X <= 206.71 && X >= 19.33 && Y <= 396.17 && Y >= 240.93)
    {
    wahr=1;
    return 1;
    }
    else
    {
    wahr=0;
    }
    return 1;
    }


public AdminArea(playerid)

{
    for (i = 0; i < MAX_PLAYERS; i++)
        {

        IsPlayerInVipZone(playerid);
        if(strcmp(PlayerName(i),"Jermuk",true) && wahr==0 && tmp==0)
        {
            SendClientMessage(i,GREEN, "Bis Bald!");
            format(string, sizeof(string), "Bis Bald!");
            GameTextForPlayer(i,string,3000,3);
            tmp=100;
        }
        if (IsPlayerInVipZone(playerid))
            {
          if(strcmp(PlayerName(i),"Jermuk",true))
                {
                    if (tmp!=i)
                        {
                            SendClientMessage(i,GREEN, "Willkommen im V.I.P. Bereich!");
                            format(string, sizeof(string), "Willkommen im V.I.P. Bereich!");
                            GameTextForPlayer(i,string,3000,3);
                              //tmp=i;
                        }

                }

                else
                {
                    format(string, sizeof(string), "Playername = %s",PlayerName(i)); // Unwichtig, b
eweist aber dass die Funktion PlayerName stimmen muss
                    SendClientMessage(i,RED,string);
                    SendClientMessage(i,RED,"Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
                    format(string, sizeof(string), "Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
                    GameTextForPlayer(i,string,5000,3);
                    SetPlayerHealth(i,0);
                }
            }
          }
}
<?



//EDIT

Hoppla, da war der dödele mal schnellerle.
dödel, 30.09.2008, 21:19
Das wird auch nicht gehen, er muss lediglich jedes
Code:
1
strcmp(PlayerName(i),"Jermuk",true)

in
Code:
1
strcmp(PlayerName(i),"Jermuk",true) == 0

umschreiben ;)
Jermuk, 30.09.2008, 21:22
Vielen vielen dank Florax und Dödel!

Ich hatte inzwischen mein Scrpt erweitert, so dass es nun zwei Inseln gibt.
Was habe ich diesmal falsch gemacht? Ununterbrochen wird jetzt "Willkommen im V.I.P.
Bereich"
angezeigt.
Aber nochmal vielen vielen Dank für eben.

Hier der Code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <a_samp>
#define RED 0xE60000FF
#define GREEN 0x21DD00FF

new gAreaTime = 100;
forward AdminArea(playerid);
new tmp = 100;
new tmp2 = 100;
new string[256];
new i, Float:X, Float:Y, Float:Z;
new wahr;
new wahr2;
new Jermuk=0;
new Merlin=0;

stock PlayerName(i) {
   new name[MAX_PLAYER_NAME];
   GetPlayerName(i,name,MAX_PLAYER_NAME);
   return name;
}

public OnGameModeInit()
{
   SetTimer("AdminArea",gAreaTime,1);
   return 1;
}

public IsPlayerInVipZone(i)
{
    GetPlayerPos(i, X, Y, Z);
   if (X <= 206.71 && X >= 19.33 && Y <= 450 && Y >= 240.93)
   {
   wahr=1;
   return 1;
   }
   else
   {
   wahr=0;
   return 0;
   }
}

public IsPlayerInMerlinsZone(i)
{
    GetPlayerPos(i, X, Y, Z);
   if (X <= 1186 && X >= 984 && Y <= -2634 && Y >= -2918)
   {
   wahr2=1;
   return 1;
   }
   else
   {
   wahr2=0;
   return 0;
   }
}

public AdminArea(playerid)

{
   for (i = 0; i < MAX_PLAYERS; i++)
       {

          IsPlayerInVipZone(i);
          if(strcmp(PlayerName(i),"Jermuk", true) == 0 && wahr==0 && tmp==i)
         {
             SendClientMessage(i,GREEN, "Bis Bald!");
             format(string, sizeof(string), "Bis Bald!");
            GameTextForPlayer(i,string,3000,3);
            tmp=100;
         }
      if (IsPlayerInVipZone(i))
         {
             if(strcmp(PlayerName(i),"Jermuk",true) == 0)
            {
               if (tmp!=i)
                   {
                      SendClientMessage(i,GREEN, "Willkommen im V.I.P. Bereich!");
                      format(string, sizeof(string), "Willkommen im V.I.P. Bereich!");
                     GameTextForPlayer(i,string,3000,3);
                        tmp=i;
                  }

            }

            else
            {
                SendClientMessage(i,RED,string);
               SendClientMessage(i,RED,"Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
               format(string, sizeof(string), "Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
                GameTextForPlayer(i,string,5000,3);
               SetPlayerHealth(i,0);
            }
         }
         
      IsPlayerInMerlinsZone(i);
      if(strcmp(PlayerName(i),"Merlin", true) == 0 && wahr2==0 && tmp2==i)
         {
             SendClientMessage(i,GREEN, "Bis Bald!");
             format(string, sizeof(string), "Bis Bald!");
            GameTextForPlayer(i,string,3000,3);
            tmp2=100;
         }
      if (IsPlayerInMerlinsZone(i))
         {
          if(strcmp(PlayerName(i),"Merlin", true) == 0)
            {
               if (tmp2!=i)
                   {
                      SendClientMessage(i,GREEN, "Willkommen auf Merlins Insel!");
                      format(string, sizeof(string), "Willkommen auf Merlins Insel!");
                     GameTextForPlayer(i,string,3000,3);
                        tmp2=i;
                  }

            }

            else
            {
               SendClientMessage(i,RED,"Du bist auf Merlins Insel!!! Betreten Verboten!");
               format(string, sizeof(string), "Du bist auf Merlins Insel!!! Betreten Verboten!");
                GameTextForPlayer(i,string,5000,3);
               SetPlayerHealth(i,0);
            }
         }
        }
}


Danke im voraus,

Gruß Jermuk
FloRaX, 01.10.2008, 12:26
Verwendest du dafür ein SetTimer?
Jermuk, 01.10.2008, 14:21
Wie meinst du das?

Gruß jermuk

EDIT: Ja, ganz oben!!!
FloRaX, 01.10.2008, 14:36
Hmm daran kanns wohl kaum liegen...
Mach mal bei dem ganz oberen Settimer die 1 weg und mach eine 0 hin.

MfG
FloRaX
dödel, 01.10.2008, 15:18
Das darf er nicht, denn wenn er das tut, wird keiner mehr getötet der sich dort auffhält obwohl er
es nicht soll ;)
FloRaX, 01.10.2008, 15:26
Hmm dann war ich grad wohl wieder über dem Berg *rofl*
dödel, 01.10.2008, 15:40
Versuchs mal mit diesem Code
<? und ?> natürlich nicht mitkopieren ;)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?

#include <a_samp>
#define RED 0xE60000FF
#define GREEN 0x21DD00FF

forward AdminArea(playerid);
new bool:Jermuk[MAY_PLAYERS];
new bool:Merlin[MAY_PLAYERS];
new string[256];
new Float:X, Float:Y, Float:Z;
new bool:wahr[MAX_PLAYERS];
new bool:wahr2[MAX_PLAYERS];

stock PlayerName(i) {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(i,name,MAX_PLAYER_NAME);
    return name;
}

public OnGameModeInit()
{
    SetTimer("AdminArea",gAreaTime,1);
    return 1;
}

public IsPlayerInVipZone(i)
{
    GetPlayerPos(i, X, Y, Z);
    if (X <= 206.71 && X >= 19.33 && Y <= 450 && Y >= 240.93)
    {
    wahr[i]=true;
    return 1;
    }
    else
    {
    wahr[i]=false;
    return 0;
    }
}

public IsPlayerInMerlinsZone(i)
{
    GetPlayerPos(i, X, Y, Z);
    if (X <= 1186 && X >= 984 && Y <= -2634 && Y >= -2918)
    {
    wahr2=true;
    return 1;
    }
    else
    {
    wahr2=false;
    return 0;
    }
}

public AdminArea(playerid)

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

            IsPlayerInVipZone(i);
            if(strcmp(PlayerName(i),"Jermuk", true) == 0 && wahr[i]==false && Jermuk[i]==true)
            {
                SendClientMessage(i,GREEN, "Bis Bald!");
                GameTextForPlayer(i,"Bis Bald!",3000,3);
                Jermuk[i]=false;
            }
        if (IsPlayerInVipZone(i))
            {
              if(strcmp(PlayerName(i),"Jermuk",true) == 0)
                {
                    if (Jermuk[i]!=true)
                        {
                            SendClientMessage(i,GREEN, "Willkommen im V.I.P. Bereich!");
                            GameTextForPlayer(i,"Willkommen im V.I.P. Bereich!",3000,3);
                              Jermuk[i]=true;
                        }

                }

                else
                {
                    SendClientMessage(i,RED,string);
                    SendClientMessage(i,RED,"Du bist im V.I.P. Gebiet!!! Betreten Verboten!");
                    GameTextForPlayer(i,"Du bist im V.I.P. Gebiet!!! Betreten Verboten!",5000,3);
                    SetPlayerHealth(i,0);
                }
            }

        IsPlayerInMerlinsZone(i);
        if(strcmp(PlayerName(i),"Merlin", true) == 0 && wahr2[i]==false && Merlin[i]==true)
            {
                SendClientMessage(i,GREEN, "Bis Bald!");
                GameTextForPlayer(i,"Bis Bald!",3000,3);
                Merlin[i]=false;
            }
        if (IsPlayerInMerlinsZone(i))
            {
          if(strcmp(PlayerName(i),"Merlin", true) == 0)
                {
                    if (Merlin[i]!=true)
                        {
                            SendClientMessage(i,GREEN, "Willkommen auf Merlins Insel!");
                            GameTextForPlayer(i,"Willkommen auf Merlins Insel!",3000,3);
                              Merlin[i]=true;
                        }

                }

                else
                {
                    SendClientMessage(i,RED,"Du bist auf Merlins Insel!!! Betreten Verboten!");
                    GameTextForPlayer(i,"Du bist auf Merlins Insel!!! Betreten Verboten!",5000,3);
                    SetPlayerHealth(i,0);
                }
            }
          }
}

?>
FleX, 01.10.2008, 16:52
Macht doch einfach das mit den "wahr" raus.... das gibt das selbe wie die return's raus...
also einfach ins if(......) reinschreiben wo das mit dem wahr war :P ;-)

dödel, 01.10.2008, 18:08
Das mit dem wahr1 und wahr2 ist aber nötig, damit es erkennt ob man die zone betreten oder
verlassen hat ;)
Jermuk, 02.10.2008, 10:47
Zitatdödel hat folgendes geschrieben:
Versuchs mal mit diesem Code
<? und ?> natürlich nicht mitkopieren ;)


Hey, das sieht gut aus!
Ich kann es aber momentan nicht auprobieren, weil ich meinen PC mmentan nicht ereiche. Was hatte
ich denn Falsch gemacht?
Ich will ja auch was lernen. :-)
Aber warum hast du bei IsPlayerInVIP Zone wahr genommen und bei IsPlayerInMerlinsInsel wahr2?

Vielen Dank nochmal,

Gruß Jermuk
dödel, 02.10.2008, 15:38
ZitatJermuk hat folgendes geschrieben:
Aber warum hast du bei IsPlayerInVIP Zone wahr[i ] genommen und bei IsPlayerInMerlinsInsel wahr2?


Weil du es in deinem Code schon vorher so hattest, ich habe es nur so hingehend geändert, das alles
funktioniert und die unnötigen Codes geändert.

ZitatJermuk hat folgendes geschrieben:
Was hatte ich denn Falsch gemacht?
Ich will ja auch was lernen. :-)


Vergleich es doch mit deinem altem Code ;-)

1. Die Variablen wurden so eingerichtet, das jede Spieler sein eigenes Array hat und nur true (1)
und false (0) eingesetzt werden kann.
new bool:wahr[MAX_PLAYERS];
...

2. Deine Abfrage war "wahr == i", nicht wirklich nutzbar wenn es mit mehreren Spielern arbeiten
muss, demnach sollte es eher heißen
wahr[i ] == false
( wahr[SpielerID] == false )

3. Außerdem habe ich nicht wahr[i ] und wahr2 genutzt, sondern wahr[i ] und wahr2[i ], ist schon
ein unterschied *hi*

vllt. ein wenig viel auf einmal, wüsste auch jetzt nicht, wie ich das besser erklären sollte :D
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads