Wo sollen diese Flaggen eigentlich sein? Nur an genau dieser einen Position? Und welche Fraktion soll bei welcher Flagge (A B C) stehen?
Ja, es wäre besser gewesen einen Thread auf zu machen.
Wo sollen diese Flaggen eigentlich sein? Nur an genau dieser einen Position? Und welche Fraktion soll bei welcher Flagge (A B C) stehen?
Ja, es wäre besser gewesen einen Thread auf zu machen.
Anstatt i schreibst du beim Besitzer die Zahl direkt rein, also zum Beispiel 2.
Cheevy.Shakur: Steht das vor oder nach GangZoneCreate? Es muss danach stehen, also in dem Callback in dem du die Zonen erstellst.
Außerdem erstellst du so an jeder der drei Stellen MAX_GANGFIGHT's Labels, da die Positionen fest angegeben sind, sprich für jeden Durchlauf ist es dieselbe Position.
Du musst es zum Beispiel so schreiben:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(SpielerInfo[playerid][pDuty] == 1)
{
if(pickupid == Polizeipick[0])
{
if(Polizeihat[playerid][0] == 0)
{
GivePlayerMoney(playerid, 1000);
Polizeihat[playerid][0] = 1;
}
}
else if(pickupid == Polizeipick[1])
{
if(Polizeihat[playerid][1] == 0)
{
SetPlayerHealth(playerid, 100);
Polizeihat[playerid][1] = 1;
}
}
else if(pickupid == Polizeipick[2])
{
if(Polizeihat[playerid][2] == 0)
{
GivePlayerWeapon(playerid, 38, 1000);
Polizeihat[playerid][2] = 1;
}
}
}
return 1;
}
Du benötigst den direkten Link.
http://techapple.net/2014/04/t…k-maker-tool-cloudlinker/
Das muss anfangen mit "...dl.dropbox.com .."
Hast du die prints noch drin?
Wenn ja, poste das bitte nochmal, sowie den neusten MySQL Log.
Dropbox zum Beispiel.
Ahhh, na klar!
new GangfightZone[MAX_GANGFIGHT];
zu:
new GangfightZone[MAX_GANGFIGHT] = {-1,...};
Und:
printf("Vor der Anzeige: %d", playerid);
for(new i;i<MAX_GANGFIGHT;i++)
{
if(GangfightZone[i] == -1) continue;
printf("Zone: %d | Besitzer: %d | Farbe: %d", GangfightZone[i], Gangfight[i][gBesitzer], GetZoneColor(Gangfight[i][gBesitzer]));
GangZoneShowForPlayer(playerid, GangfightZone[i], GetZoneColor(Gangfight[i][gBesitzer]));
}
printf("Alle angezeigt");
Dann geht's.
Du hattest immer eine Klammer-Zu am Ende zu viel.
Schreibe es aber besser so:
ocmd:amiadmin(playerid,params[])
{
switch(GetPVarInt(playerid,"Adminlevel"))
{
case 1: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Volunteer(Rang1).");
case 2: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Moderator(Rang2).");
case 3: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Administrator(Rang3).");
case 4: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Server-Manager(Rang4).");
}
return 1;
}
Bei OnPlayerConnect bzw. OnPlayerRequestClass:
http://wiki.sa-mp.com/wiki/PlayAudioStreamForPlayer
Und beim Login:
http://wiki.sa-mp.com/wiki/StopAudioStreamForPlayer
Die .mp3 Datei muss auf einem Webhost liegen (damit du einen Link hast), oder auf einer entsprechenden Seite hochgeladen werden.
Also, der Code an sich, um die Zone anzuzeigen funktioniert ohne Probleme. Das heißt, es kann eigentlich nur sein, dass die Zone nicht angezeigt wird, weil der Code nicht ausgeführt wird.
Hier der Test-Code:
Schreibe den Teil hier mal um:
for(new i;i<MAX_GANGFIGHT;i++)
{
GangZoneShowForPlayer(playerid, GangfightZone[i], GetZoneColor(Gangfight[i][gBesitzer]));
}
zu:
printf("Vor der Anzeige: %d", playerid);
for(new i;i<MAX_GANGFIGHT;i++)
{
printf("Zone: %d | Besitzer: %d | Farbe: %d", GangfightZone[i], Gangfight[i][gBesitzer], GetZoneColor(Gangfight[i][gBesitzer]));
GangZoneShowForPlayer(playerid, GangfightZone[i], GetZoneColor(Gangfight[i][gBesitzer]));
}
printf("Alle angezeigt");
Die Zone ist irgendwo in San Fierro. Wenn du dich zu "-2232.45, 949.109, 100.0" teleportierst, dann bist du direkt dort.
Poste dann, wenn du dich gespawnt hast, das was im Server Log steht (die prints).
Dann schreibe es so:
WBB_AddThread (SpielerName(pID),Erfolge,"","Erfolg: Zum Leader benannt!",string1, 0 , ERFOLG_CLOSE , ERFOLG_DISABLE , 0 , 1 , 0 , 1 , 4 );
Falls es nicht geht, poste bitte wie du Erfolge deklariert hast (Code-Zeile(n)).
Wie hast du getPlayerName und Erfolge deklariert?
Deine Variable Prefix macht nicht wirklich Sinn, da nichts drin steht und es nur eine Größe von 1 hat, sprich es wird wegen dem EOS Zeichen immer leer sein.
Dann füge das bei OnGameModeInit ein:
SetTimer("CreateZombieExplosions", 50000, true);
Und das ganz unten im Gamemode:
forward CreateZombieExplosions();
public CreateZombieExplosions()
{
new Float:x,Float:y,Float:z;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i))
{
GetPlayerPos(i,x,y,z);
CreateExplosion(x+random(75)+25, y+random(75)+25, z, 12, 10.0);
}
}
return SendClientMessageToAll(C_RED,"[ACHTUNG]: Es fand eine Explosion statt. Zombies sind möglicherweise Ausgebrochen begib dich in Schutz!");
}
Das andere Zeug machst du weg.
Und wie oft soll eine Explosion stattfinden (Anzahl / Differenz zwischen zwei Explosionen)?
Soll das für jeden Spieler (im jeweiligen Umkreis) erzeugt werden, oder nur für bestimmte? Falls bestimmte, unter welchen Bedingungen?
Wenn du den Timer unter OnPlayerSpawn startest, dann erhöht sich die Anzahl der Aufrufe des Timers bei jedem Spawn um 1, sprich wenn du 10 mal stirbst, werden 11 Explosionen pro Sekunde erstellt.
Wann soll denn diese Nachricht überhaupt kommen? Und wann sollen die Explosionen erstellt werden, und wie lange?
Der Code, wie er momentan ist macht keinen Sinn, da er linear wachsend an Aufrufen ist.
(Ich hab dir zu dem Code noch gar nichts gesagt
Von mir kommt sowas nicht.).
Schreibe diese Nachricht einfach dort hin, wo du den Timer zum ersten Mal startest:
SendClientMessageToAll(C_RED,"[ACHTUNG]: Es fand eine Explosion statt. Zombies sind möglicherweise Ausgebrochen begib dich in Schutz!");
Und aus dem Timer-Callback nimmst du sie raus.
Zwecks Pawn Code: Der Pawn BB Code - Die richtige Anwendung
Wenn du es so nicht haben willst, dann nicht.
Wie sieht denn dein Code aus?