Zitatnew Reason[256],
ressourcenfressend Im Chat können eh nur 128 Zeichen geschrieben werden und der Befehl /kick hat mir Leerzeichen schon 6 Dann wären es noch 122 (wenn ich richtig gerechnet habe ist schon ein bisschen spät).
Zitatnew Reason[256],
ressourcenfressend Im Chat können eh nur 128 Zeichen geschrieben werden und der Befehl /kick hat mir Leerzeichen schon 6 Dann wären es noch 122 (wenn ich richtig gerechnet habe ist schon ein bisschen spät).
Von aufschließen haste im 1. Post nichts gesagt :O Hab dir jetzt extra ein kleines Beispiel gemacht Nur ohne aufschliessen... Gucks dir mal an, vielleicht verstehste dann wie du es machen musst.
new roller[MAX_PLAYERS],bool:erstellt[MAX_PLAYERS];
// beim Befehl:
if(erstellt[playerid] == false) // wenn der Spieler keinen Roller erstellt hat
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z); // position speichern
roller[playerid]= CreateVehicle(ROLLER_ID,x,y,z,0,0,0,-1); // roller an dieser position erstellen
erstellt[playerid] = true; // jetzt hat er einen Roller erstellt
}
// nun bei OnPlayerStateChange abfragen ob der Spieler Roller fährt und ob es sein Roller ist.
if(newstate == PLAYER_STATE_DRIVER) // wenn der Spieler fahrer ist
{
new vid = GetPlayerVehicleID(playerid);
for(new i;i<MAX_PLAYERS;i++)
{
if(vid == roller[i] && i == playerid) //wenn das Fahrzeug ein Roller ist und es der Roller vom Spieler ist
{
return SendClientMessage(playerid,FARBE,"Du darfst fahren!");
}
else
{
SendClientMessage(playerid,FARBE,"Du nicht!");
return RemovePlayerFromVehicle(playerid);
}
}
}
so in der Art dürfte es gehen
edit: schreibfehler heute schreibe ich echt viele edits xD
Fast richtig. Nur noch
AddPlayerClass(0,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 0
AddPlayerClass(299,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 299
AddPlayerClass(28,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 28
AddPlayerClass(29,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 29
AddPlayerClass(12,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 12
zu OnGameModeInit verschieben
ZitatBei If Abfragen nicht, bei allem anderen schon...
Bei Switch-Anweisungen auch nicht
edit: Bei einem Befehl gibt es auch noch den Text der nach dem Befehl eingegeben wird. Dieser wird bei OnPlayerCommandText in der Variable cmdtext gespeichert. Am leichtesten (finde ich) geht das mit DCMD + sscanf. Such mal hier im Forum nach Command mit Parametern
Nein 1 mal reicht.
Hat er doch garnicht Die Funktion heißt nunmal IsPlayerAdmin(playerid).
Du musst natürlich bei OnPlayerSpawn die Funktion aufrufen. Einfach GivePlayerWeapons(playerid); einfügen
edît: schreibfehler
Wie wärs wenn du mir die Fehler zeigst? Ist nur ein Beispiel wie sowas aufgebaut werden könnte
edit: ok es muss if(!params[0])return SendClientMessage(playerid,DEINE_FARBE,"Verwendung: /freez [playerid]"); heißen. zufrieden?
Ich bin ja eher für OCMD^^ Hier mal ein Beispiel:
ocmd:freez(playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,DEINE_FARBE,"Du bist kein Admin!");
if(!params)return SendClientMessage(playerid,DEINE_FARBE,"Verwendung: /freez [playerid]");
new id = strval(params);
if(!IsPlayerConnected(id))return SendClientMessage(playerid,DEINE_FARBE,"Spieler nicht online!");
TogglePlayerControllable(id,0);
SendClientMessage(playerid,DEINE_FARBE,"Spieler gefreezt!");
return 1;
}
Weiß nicht obs tut habs hier im Editor gescriptet
edit: " vergessen
edit2: hab freeze command draus gemacht
TogglePlayerControllable .. such danach mal im Samp Wiki
oder mit switch:
stock GivePlayerWeapons(playerid)
{
switch(PlayerInfo[playerid][pLeader])
{
case 5,6,7,13,14,15,16,17,18,19,20:
{
GivePlayerWeapon(playerid,3,1);
GivePlayerWeapon(playerid,29,900);
GivePlayerWeapon(playerid,31,900);
GivePlayerWeapon(playerid,41,900);
GivePlayerWeapon(playerid,22,900);
SetPlayerArmour(playerid,100.0);
}
}
switch(PlayerInfo[playerid][pMember])
{
case 5,6,7,13,14,15,16,17,18,19,20:
{
GivePlayerWeapon(playerid,3,1);
GivePlayerWeapon(playerid,29,900);
GivePlayerWeapon(playerid,31,900);
GivePlayerWeapon(playerid,41,900);
GivePlayerWeapon(playerid,22,900);
SetPlayerArmour(playerid,100.0);
}
}
return 1;
}
oder so ähnlich
Da wäre das Problem das er GF verwendet... Ich würd einfach OnPlayerSpawn das Team abfragen und dann Waffen geben (so wie die 1. Antwort es zeigt)
edit: klar du kannst natrülich noch mehr Teams zur Abfrage hinzufügen. Ist ja nur ein Beispiel
Das ist ne eigene Funktion und kann daher auch GivePlayerWeapons heißen.
stock GivePlayerWeapons(playerid)
{
//SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1); // 1 ist das level 1 999 ds nur wen du es willst ;)
if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
{
GivePlayerWeapon(playerid,3,1);
GivePlayerWeapon(playerid,29,900);
GivePlayerWeapon(playerid,31,900);
GivePlayerWeapon(playerid,41,900);
GivePlayerWeapon(playerid,22,900);
SetPlayerArmour(playerid,100.0);
}
return 1;
}
ich würd erstmal die maximale Anzahl an Fraktionen definieren:
#define fraktionen 10
danach kannste einfach
new FraktionsInfo[fraktionen][Fraktionsdaten]; machen
for(new v=0; v< sizeof(Autohausautos); v++)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
SetVehicleParamsForPlayer(Autohausautos[v],i,0,1);
}
}
probiers mal so
Wieso hast du beim letzte return 0;?
EDIT: probiers mal so...
if(pickupid == 0)
{
if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid, 0x3C00FFFF, "Du bist kein Cop!");
if(GetPlayerMoney(playerid) <250) return SendClientMessage(playerid, 0x3C00FFFF, "Du hast zuwenig Geld um dir Munition zu kaufen![250$]"); //Wenn Spieler zu wenig Geld hat, soll er durch das "return" den Vorgang abbrechen!
GivePlayerMoney(playerid, -250); //Entzieht dem Spieler 100$ als Kaufpreis!
GivePlayerWeapon(playerid, 24, 20); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
SendClientMessage(playerid, 0x3C00FFFF, "Du hast deine Munition um 20 Schuss wieder augefüllt!");
}
else
if(pickupid == 1)
{
if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid, 0x3C00FFFF, "Du bist kein Cop!");
if(GetPlayerMoney(playerid) <1000) return SendClientMessage(playerid, 0x3C00FFFF, "Du hast zuwenig Geld um dir ein Waffenpack zu kaufen![1000$]"); //Wenn Spieler zu wenig Geld hat, soll er durch das "return" den Vorgang abbrechen!
GivePlayerMoney(playerid, -1000); //Entzieht dem Spieler 100$ als Kaufpreis!
GivePlayerWeapon(playerid, 24, 250); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
GivePlayerWeapon(playerid, 25, 250); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
GivePlayerWeapon(playerid, 28, 250); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
SendClientMessage(playerid, 0x3C00FFFF, "Du hast ein Waffenpack erhalten!");
}
else
if(pickupid == 2)
{
if(gTeam[playerid] != TEAM_Army)return SendClientMessage(playerid, 0x3C00FFFF, "Du bist kein Army Member!");
GameTextForPlayer(playerid,"Du wurdest Teleportiert",5000,6);
SetPlayerPos(playerid,2506.2234,1688.9886,19.3468);
SendClientMessage(playerid,0xD7FF00FF,"gtaSelfIde: Du wurdest durch den Pickup Teleportiert.");
}
else
if(pickupid==plenter)
{
if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid,0xD7FF00FF,"Du bist kein Cop!");
SetPlayerPos(playerid,271.884979,306.631988,999.148437);
SetPlayerInterior(playerid,2);
}
edit2^^: zeig mal wie du die Pickups erstellt hast. Wenn du nur CreatePickup verwendet hast könnte es daran liegen. Ich würde es wie bei plenter machen. Also
new testpickup;
testpickup = CreatePickup ...
if(pickupid == testpickup)
#define ENTER_MAX_PICKUP 128
Keine Ahnung warum aber daran liegts. Ich würds einfach so machen:
new PickInfo[][CheckEnum] = klappt bei mir
if(pickupid==plenter)
{
if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid,0xD7FF00FF,"Du bist kein Cop!");
SetPlayerPos(playerid,271.884979,306.631988,999.148437);
SetPlayerInterior(playerid,2);
return 0;
}
so müsste könnte es gehen
edît: text geändert