Und mehrmals in einem Befehl formatieren?!
Ja, der Inhalt wird danach einfach wieder überschrieben.
So musst du nicht für jeden Text einen separaten String formatieren.
Und mehrmals in einem Befehl formatieren?!
Ja, der Inhalt wird danach einfach wieder überschrieben.
So musst du nicht für jeden Text einen separaten String formatieren.
Du hast es nichtmal 10 Minuten versucht.
Eine .pwn und .amx Datei in den Filterscripts Ordner zu schieben und in die server.cfg einzutragen dürfte nicht zu schwer sein.
Etwas Eigeninitiative solltest du schon zeigen. Ein eigener Server erstellt sich schließlich nicht alleine und auch nicht von anderen.
Du hast string formatiert, aber sstring gesendet. Außerdem passen die Parameter im format nicht.
dcmd_setfraktion(playerid,params[])
{
if(!IstSpielerAdmin(playerid, 5)) return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
new pid, frakid, string[145], name[MAX_PLAYER_NAME];
if(sscanf(params,"ud",pid,frakid)) return SendClientMessage(playerid,GELB,"Verwendung : /setfraktion [ID][Fraktions ID]");
if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,ROT,"Ungültiger Spieler");
if(IstSpielerInFraktion(pid,frakid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in der Fraktion");
sSpieler[pid][Fraktion] = frakid;
GetPlayerName(pid, name, MAX_PLAYER_NAME);
format(string, sizeof(string), "Du hast dem Spieler %s (ID: %d) die Fraktion %d.", name, playerid, frakid);
SendClientMessage(playerid,HELLBLAU,string);
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
format(string, sizeof(string), "Du wurdest der Fraktion %d von %s zugewiesen!", frakid, name);
SendClientMessage(pid,HELLBLAU,string);
return 1;
}
Versuche es hiermit:
http://forum.sa-mp.com/showthread.php?t=406833
Eventuell musst du den .pwn neu kompilieren.
Tutorial für die Nutzung:
Was wird dir so im Log ausgegeben?
stock IsPlayerInGangZone(playerid,gangzoneid)
{
new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
printf("%f >= %f", Pos[0], GangZoneInfo[gangzoneid][pos1]);
printf("%f <= %f", Pos[0], GangZoneInfo[gangzoneid][pos2]);
printf("%f >= %f", Pos[1], GangZoneInfo[gangzoneid][pos3]);
printf("%f <= %f", Pos[1], GangZoneInfo[gangzoneid][pos4]);
if( Pos[0] >= GangZoneInfo[gangzoneid][pos1] && Pos[0] <= GangZoneInfo[gangzoneid][pos2] && Pos[1] >= GangZoneInfo[gangzoneid][pos3] && Pos[1] <= GangZoneInfo[gangzoneid][pos4] ) return 1;
else return 0;
}
Steht doch da was du machen sollst?
Alles anzeigenInstallation
Video Installation: https://www.youtube.com/watch?v=rW6y1vzDT5M
1. Download TDEditor 1.17 package
2. Copy TDE.pwn and TDE.amx to your filterscripts server folder.
3. Copy TDE.dll and sscanf.dll to your plugins server folder (create if you haven't)
4. Edit your server.cfg and add TDE in filterscripts, TDE and sscanf in plugins lines, example here.
5. Copy TDE.txd to C:/.../GTA San Andreas/models/txd
6. Download and install Microsoft Visual C++ 2010 Redistributable Package (x86)
7. Copy all .dll files from DLL Files folder to your main server folder
8. Open your server.
Nutze einen Textdraw Editor wie diesen:
http://forum.sa-mp.com/showthread.php?t=543002
Versuche es dann nochmal, eventuell in einer anderen Zone.
Bei Zone ID 1 (die 2. in der Liste = "Randolph Industrial Estate Ganggebiet") ist die Flagge ganz am Rand der Zone, eventuell bist du draußen gestanden.
Der Spieler ist in keiner der Gangzonen.
if(!GangZoneInfo[GangWarInfo[g][zoneid]][inwar])return 1;
zu:
if(GangWarInfo[g][zoneid] == -1) return 1;
if(!GangZoneInfo[GangWarInfo[g][zoneid]][inwar])return 1;
for(new is = 0; is < 13; i++)
zu:
for(new is = 0; is < 13; is++)
Dann musst du den Code debuggen.
Was wird dir so im Server Log ausgegeben?
//Gang-War Kill System
printf("killerid: %d", killerid);
if(killerid!=INVALID_PLAYER_ID)
{
printf("Fraks: %d != %d", pInfo[playerid][fraktion], pInfo[killerid][fraktion]);
if(pInfo[playerid][fraktion] != pInfo[killerid][fraktion])
{
for(new i=0; i<sizeof(GangZoneInfo); i++)
{
printf("i: %d", i);
printf("IsPlayerInGangZone: %d", IsPlayerInGangZone(killerid, i));
if(!IsPlayerInGangZone(killerid, i))continue;
printf("inwar: %d", GangZoneInfo[i][inwar]);
if(!GangZoneInfo[i][inwar])continue;
for(new gw=0; gw<sizeof(GangWarInfo); gw++)
{
printf("gw: %d", gw);
printf("zoneid: %d == %d", GangWarInfo[gw][zoneid], i);
if(GangWarInfo[gw][zoneid]!=i)continue;
if(pInfo[killerid][fraktion]==GangWarInfo[gw][angreifer])
{
GangWarInfo[gw][kills_angreifer]++;
}
else if(pInfo[killerid][fraktion]==GangZoneInfo[i][gzowner])
{
GangWarInfo[gw][kills_owner]++;
}
printf("Nachricht.");
new str[128];
format(str,sizeof(str),"*Gangfight* %s wurde von %s getötet.",PlayerName(playerid),PlayerName(killerid));
print(str);
for(new ii = 0, j = GetPlayerPoolSize(); ii <= j; ii++)
{
printf("ii: %d (on: %d)", ii, PlayerOnline(ii));
if(!PlayerOnline(ii))continue;
printf("%d == %d || %d == %d", pInfo[ii][fraktion],GangZoneInfo[i][gzowner],pInfo[ii][fraktion],GangWarInfo[gw][angreifer]);
if(pInfo[ii][fraktion]!=GangZoneInfo[i][gzowner] && pInfo[ii][fraktion]!=GangWarInfo[gw][angreifer])continue;
printf("Sende Nachricht an %d", ii);
SendClientMessage(ii, 0x5F704F00, str);
}
print("break");
break;
}
}
}
print("Ende.");
}
Siehst so aus als hast du keinen Zugriff auf den MySQL Server.
Stimmen die Login Daten?
Beachte, dass mit R40+ die Parameter Datenbank und Passwort vertauscht worden sind.
http://wiki.sa-mp.com/wiki/MySQL/R40#mysql_connect
g_Sql = mysql_connect("127.0.0.1", "root", "mypass", "mydatabase");
stock WeaponName(playerid, weaponID)
zu:
stock WeaponName(weaponID)
Wie sieht deine WeaponName Funktion aus?
Kannst du die anderen Zeilen bitte auch poste und markieren?
Du musst format nutzen:
new str[64];
for(new is = 0; is < 13; i++)
{
GetPlayerWeaponData(playerid, is, weapons[is][0], weapons[is][1]);
format(str, sizeof(str), "Waffe_%i: %s",is,WeaponName(weapons[is][0]));
SendClientMessage(playerid, COLOR_RED, str);
}
Das break in Zeile 34 beendet die Schleife nach dem ersten Durchlauf.
Entferne die.
Ich habe dir den Code etwas umgestellt, so sind die Abfragen, die nichts mit den Schleifen zu tun haben, außerhalb und werden nicht jedes mal geprüft.
//Gang-War Kill System
if(killerid!=INVALID_PLAYER_ID)
{
if(pInfo[playerid][fraktion] != pInfo[killerid][fraktion])
{
for(new i=0; i<sizeof(GangZoneInfo); i++)
{
if(!IsPlayerInGangZone(killerid, i))continue;
if(!GangZoneInfo[i][inwar])continue;
for(new gw=0; gw<sizeof(GangWarInfo); gw++)
{
if(GangWarInfo[gw][zoneid]!=i)continue;
if(pInfo[killerid][fraktion]==GangWarInfo[gw][angreifer])
{
GangWarInfo[gw][kills_angreifer]++;
}
else if(pInfo[killerid][fraktion]==GangZoneInfo[i][gzowner])
{
GangWarInfo[gw][kills_owner]++;
}
new str[128];
format(str,sizeof(str),"*Gangfight* %s wurde von %s getötet.",PlayerName(playerid),PlayerName(killerid));
for(new ii = 0, j = GetPlayerPoolSize(); ii <= j; ii++)
{
if(!PlayerOnline(ii))continue;
if(pInfo[ii][fraktion]!=GangZoneInfo[i][gzowner] && pInfo[ii][fraktion]!=GangWarInfo[gw][angreifer])continue;
SendClientMessage(ii, 0x5F704F00, str);
}
break;
}
}
}
}
new Gutschein[e_Gutscheine][MAX_GUTSCHEINE];
zu:
new Gutschein[MAX_GUTSCHEINE][e_Gutscheine];
Und die Schleife gegebenenfalls bei 0 beginnen lassen.
Öffnen
MoveDynamicObject(tor[31],2496.2058,-1691.8954,14.9201,0.01,0,0,270.0000);
torstatus[31] = 1;
Schließen MoveDynamicObject(tor[31],2496.2058,-1691.9954,14.9201,0.01,0,0,180.0000);
torstatus[31] = 0;
Die Position muss beim Öffnen minimal verändert werden (habe den Y Wert um 0.1 geändert), sonst bewegt sich das Objekt nicht.
Außerdem muss die Geschwindigkeit sehr klein sein (0.01), da das Objekt ja nur minimal bewegt wird.
Passe die Geschwindigkeit an, falls es zu schnell oder langsam geht.
Zwei Gamemodes auf einmal kannst du ja nicht starten. Hast du einen zweiten Server auf dem gleichen Rechner mit dem anderen Gamemode an, oder ist der andere Gamemode komplett nicht am laufen?
Falls letzteres, dürfte das keine Probleme bereiten.