Ohne den Code (Script Ausschnitt), kann dir hier kaum jemand helfen. Wenn du lieber Fernwartung via TeamViewer o.ä. möchtest - solltest du dies erwähnen. Niemand kann dein Problem lösen, wenn er nicht mal einsehen kann - wo das Problem/der Fehler steckt. Bitte denk nächstes mal daran, den benötigten Code mit zu posten, damit es zu keiner erhöten Wartezeit deiner sowie unserer Seite gibt. Wir können doch nicht Hellsehen, wie das Script aussieht o. welches Script du überhaupt verwendest.
Beiträge von Pablo Borsellino
-
-
Ich fragte, ob es richtig gespeichert wurde in der Datei - nicht ob die Datei existiert Das, das Fahrzeug verschwindet wenn sich der Spieler ausloggt - ist natürlich. Verschwindet auch die Datei beim Relog? Wird die Funktion "ErstelleSpielerAuto(playerid,carslot)" im Public OnPlayerConnect aufgerufen? Diese Informationen wären für uns sicherlich hilfreich.
-
Wie der das macht? Ganz einfach - es wird eine Variable erstellt in der for-Schleife die den Namen 'i' trägt. Diese Variable ist gleich Null bei der Erstellung und läuft von 0 auf 2000 (MAX_VEHICLES) hoch. Doch die Variablen copcar, armycar, ambulance, signatracar und governcar sind sicher nicht mit einem Array (Größe) von 2000 ausgestattet. Somit werden die Variablen, die garnicht existieren gesetzt - dies lässt den Code abschmieren, manchmal sogar direkt den Server - ich hoffe du verstehst was ich meine Einfach mal logisch überdenken was das Script eigentlich macht. Hier die Lösung, damit es nichtmehr abschmiert!
for(new i=0;i<sizeof copcar;i++)
{
SetVehicleNumberPlate(copcar[i], "SAPD");
SetVehicleToRespawn(copcar[i]);
}
for(new i=0;i<sizeof armycar;i++)
{
SetVehicleNumberPlate(armycar[i], "Army");
SetVehicleToRespawn(armycar[i]);
}
for(new i=0;i<sizeof ambulance;i++)
{
SetVehicleNumberPlate(ambulance[i], "SAMD");
SetVehicleToRespawn(ambulance[i]);
}
for(new i=0;i<sizeof signatracar;i++)
{
SetVehicleNumberPlate(signatracar[i], "Yakuza");
SetVehicleToRespawn(signatracar[i]);
}
for(new i=0;i<sizeof governcar;i++)
{
SetVehicleNumberPlate(governcar[i], "Regierung");
SetVehicleToRespawn(governcar[i]);
} -
Zitat
Zeig mal alle Stellen im Script wo 'Time' vorkommt. Anscheinend wird nirgends die Variable 'Time' erstellt & gesetzt
Nachdem du dies erledigt hat, kann ich dir gerne weiter helfen. Ich habe dieses Thema abboniert, somit musst du mir keine Benachrichtigung (ICQ; PN o.ä.) zukommen lassen, da ich automatische eine Benachrichtigung erhalten, sobald du o. jemd. anders in diesem Thema antwortet. -
Anstatt von einem Bild kopier doch einfach den Code und setz ihn hier ins Forum via PWN BB Code:
ZitatUm den PWN BB Code anzuwenden, musst du lediglich vor dem Code Ausschnitt [pwn ] ohne Leertaste - und nach dem Code Ausschnitt [/pwn ] ohne Leertaste einfügen. Diese Funktion bietet Übersichtlichkeit, es werden Pawn Operatoren, Kommentare und sonstiges kenntlich gemacht. Dazu ist die Nichtbenutzung dieses BB Codes ein Defizit für eventuell erwartete Hilfe, die so unwahrscheinlicher gegeben wird. Zur Veranschaulichung, wie es ohne/mit PWN BB Code aussieht und die Verwendung verdeutlicht hier eine Grafik: » Klick mich «.
Probieren geht über studieren, kompilier es doch einfach. Und ja so wäre es richtig - es geht auch tiefer o. höher, im blauen Bereich (Wort wörtlich gemeint).
-
Dieses Problem hatte ich auch mal, doch dafür gibt es eine Simple Lösung. Erstelle die Textdraw's wie folgt:
• Spieler TextDraws:
// Oben ins Script:
enum _TextDraws
{
Text:TextDraw1,
Text:TextDraw2,
Text:TextDraw3,
Text:TextDraw4
}
new TextDraws[MAX_PLAYERS][_TextDraws];
// OnPlayerConnect:
TextDraws[playerid][TextDraw1]=TextDrawCreate(8.000000,435.000000,"Text");
TextDrawAlignment(TextDraws[playerid][TextDraw1],0);
TextDrawBackgroundColor(TextDraws[playerid][TextDraw1],0x000000ff);
TextDrawFont(TextDraws[playerid][TextDraw1],1);
TextDrawLetterSize(TextDraws[playerid][TextDraw1],0.299999,1.000000);
TextDrawColor(TextDraws[playerid][TextDraw1],0xffffffff);
TextDrawSetOutline(TextDraws[playerid][TextDraw1],1);
TextDrawSetProportional(TextDraws[playerid][TextDraw1],1);
TextDrawSetShadow(TextDraws[playerid][TextDraw1],1);
// Anzeigen/Ausblenden:
TextDrawShowForPlayer(playerid,TextDraws[playerid][TextDraw1]);
TextDrawHideForPlayer(playerid,TextDraws[playerid][TextDraw1]);• Server TextDraws:
// Oben ins Script:
enum _TextDraws
{
Text:TextDraw1,
Text:TextDraw2,
Text:TextDraw3,
Text:TextDraw4
}
new TextDraws[_TextDraws];
// OnGameModeInit:
TextDraws[TextDraw1]=TextDrawCreate(8.000000,435.000000,"Text");
TextDrawAlignment(TextDraws[TextDraw1],0);
TextDrawBackgroundColor(TextDraws[TextDraw1],0x000000ff);
TextDrawFont(TextDraws[TextDraw1],1);
TextDrawLetterSize(TextDraws[TextDraw1],0.299999,1.000000);
TextDrawColor(TextDraws[TextDraw1],0xffffffff);
TextDrawSetOutline(TextDraws[TextDraw1],1);
TextDrawSetProportional(TextDraws[TextDraw1],1);
TextDrawSetShadow(TextDraws[TextDraw1],1);
// Anzeigen/Ausblenden:
TextDrawShowForPlayer(playerid,TextDraws[TextDraw1]);
TextDrawHideForPlayer(playerid,TextDraws[TextDraw1]);
TextDrawShowFoAll(TextDraws[TextDraw1]);
TextDrawHideFoAll(TextDraws[TextDraw1]); -
Das heißt, du musst OnGameModeInit inspizieren, da dieser Public nicht komplett aufgerufen wird. Dies ist doch eigentlich logisch, zeig bitte ein wenig Eigeninitiative.
-
Entschuldige, änder:
#if defined MAX_PLAYERS
#undef MAX_PLAYERS
#define MAX_PLAYERS 500
zu:
#if defined MAX_PLAYERS
#undef MAX_PLAYERS
#define MAX_PLAYERS 500
#endif -
Zeig mal alle Stellen im Script wo 'Time' vorkommt. Anscheinend wird nirgends die Variable 'Time' erstellt & gesetzt
-
Deine Post ist nicht aussagekräftig genug, und liefert uns somit nicht genug Informationen um dein Problem zu lösen. Ich bitte darum, dir für nächstes mal zu merken - dein Problem genauer zu erklären und die jeweiligen Codeabschnitte zu liefern. Dies ist nicht böse gemeint, nur eine Kritisierung - damit du schneller Hilfe erwarten kannst, und es für uns einfacher ist!
Wie können Fahrzeug zu schnell spawnen? Möchtest du, das die Fahrzeuge erst nach XY Sekunden spawnen?
-
Setz mal ganz oben ins Script unter den Includes:
#if defined MAX_PLAYERS
#undef MAX_PLAYERS
#define MAX_PLAYERS 500 -
Letzte Chance:
print("[DEBUG] SetTimer("SyncUp").. Start");
synctimer = SetTimer("SyncUp", 60000, 1);
print("[DEBUG] SetTimer("SyncUp").. Ende"); -
Wenn ich dich richtig verstehe, soll man nur /bajail eingeben können, wenn der Spieler der in das Gangjail eingesperrt werden soll - auch am Gangjail ist? Ich habe den Code mal komplett überarbeitet, ich hoffe das hilft dir weiter. Kürzererer Code & mehr Inhalt.
if(strcmp(cmd,"/bajail",true) == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_GRAD6," Du bist in keinem Fahrzeug");
if(IsPlayerInRangeOfPoint(playerid,5.5,2000.7942,-1095.8110,24.9841))return SendClientMessage(playerid,COLOR_GRAD6," Du bist nicht beim Gangjail!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /bajail [playerid]");
new para1;
para1 = ReturnUser(tmp);
if(para1 == playerid)return SendClientMessage(playerid,COLOR_GRAD2," Du kannst dich nicht selbst Jailen!");
if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14)return SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!!");
if(!IsPlayerConnected(para1))return SendClientMessage(playerid,COLOR_GRAD6," Dieser Spieler ist nicht Online!");
if(para1 != INVALID_PLAYER_ID && gjailed == 0 || PlayerInfo[para1][pMember] != 14 || PlayerInfo[para1][pLeader] != 14)return SendClientMessage(playerid, COLOR_GRAD1, " Dieser Spieler ist nicht im Gangjail, oder ist kein Ballas Mitglied!");
{
if(IsPlayerInRangeOfPoint(para1,5.5,2000.7942,-1095.8110,24.9841))return SendClientMessage(playerid,COLOR_GRAD6," Dieser Spieler ist nicht beim Gangjail!");
if(GetPlayerState(para1) != PLAYER_STATE_PASSENGER)return SendClientMessage(playerid,COLOR_GRAD6," Dieser Spieler ist in keinem Fahrzeug!");
SetPlayerPos(para1,2007.2034,-1097.9321,25.0039);
gjailed = 1;
new string2[128], pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,pname,sizeof(pname));
format(string2,sizeof(string2),"*%s hat %s in den Gangknast gesteckt",sendername,giveplayer);
ProxDetector(30.0, playerid, string2, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
format(string2,sizeof(string2),"*Du du wurdest von %s in den Gangknast gesteckt",sendername);
SendClientMessage(para1,L_O,string);
}
return 1;
}if(strcmp(cmd,"/baunjail",true) == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(!IsPlayerInRangeOfPoint(playerid,5.5,2000.7942,-1095.8110,24.984))return SendClientMessage(playerid,COLOR_GRAD6," Du bist nicht beim Gangjail!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /baunjail [playerid]");
new para1;
para1 = ReturnUser(tmp);
if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14 || PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 21 || PlayerInfo[playerid][pLeader] == 21)return SendClientMessage(playerid, COLOR_GRAD1, " Du gehörst nicht zu den Ballas!");
if(IsPlayerConnected(para1))return SendClientMessage(playerid,COLOR_GRAD6," Dieser Spieler ist nicht Online!");
if(gjailed==0)return SendClientMessage(playerid,COLOR_GRAD6," Dieser Spieler ist nicht im Gangjail!");
if(para1 != INVALID_PLAYER_ID || GetPlayerState(para1) == PLAYER_STATE_PASSENGER || gjailed == 0)
{
SetPlayerPos(para1,2000.7942,-1095.8110,24.984);
gjailed = 0;
}
}
return 1;
} -
Ohne den Code (Script Ausschnitt), kann dir hier kaum jemand helfen. Wenn du lieber Fernwartung via TeamViewer o.ä. möchtest - solltest du dies erwähnen. Niemand kann dein Problem lösen, wenn er nicht mal einsehen kann - wo das Problem/der Fehler steckt. Bitte denk nächstes mal daran, den benötigten Code mit zu posten, damit es zu keiner erhöten Wartezeit deiner sowie unserer Seite gibt. Betreffende Zeilen: 36, 44, 316, 317, 321, 338, 368, 373, 379, 382, 383, 384, 385.
-
Das sowas möglich ist habe ich noch nie gehört, sollte ein Sa:Mp Bug sein. Bei SetPlayerSkin(..); wird automatisch der Skin von einem Spieler - für jeden anderen Spieler ebenso sichtbar - verändert.
Ohne den Code (Script Ausschnitt), kann dir hier kaum jemand helfen. Wenn du lieber Fernwartung via TeamViewer o.ä. möchtest - solltest du dies erwähnen. Niemand kann dein Problem lösen, wenn er nicht mal einsehen kann - wo das Problem/der Fehler steckt. Bitte denk nächstes mal daran, den benötigten Code mit zu posten, damit es zu keiner erhöten Wartezeit deiner sowie unserer Seite gibt. Betreffende Zeilen: Skinvergebung, wo der Fehler auftritt (SetPlayerSkin(..);).
-
Eigentlich möchte ich lieber Menschen etwas lehren anstatt ihnen Code zu liefern damit sie per Kopieren & Einfügen (Copy & Paste, C&P) - doch da du anscheinend ein gelegenheits Spieler ohne größere Gamemode Ziele bist - drück ich ein Auge zu. Ganz oben ins Script (rivershell(.pwn)) am besten unter "new gBlueTimesCapped=0;" fügst du folgendes ein:
new SpielerGestorben[MAX_PLAYERS],
bool:SpielerGestorben_[MAX_PLAYERS],
SpielerGTimer[MAX_PLAYERS];Direkt am Anfang vom Public OnPlayerSpawn fügst du folgendes ein:
if(((GetTickCount()-SpielerGestorben[playerid])/1000)<5&&SpielerGestorben_[playerid]==true)
{
TogglePlayerControllable(playerid,false);
SpielerGTimer[playerid]=SetTimerEx("OnPlayerSpawnEx",500,true,"i",playerid);
return 0;
}
TogglePlayerControllable(playerid,true);
SpielerGestorben_[playerid]=false;
KillTimer(SpielerGTimer[playerid]);Mit direkt meine ich nach der ersten Klammer, also wie folgt:
public OnPlayerSpawn(playerid)
{
//Hier den Code hin!SetPlayerToTeamColor(playerid);
if(gTeam[playerid] == TEAM_GREEN) {
//Restlicher Code..
return 1;
}Im Public OnPlayerDeath direkt am Anfang:
SpielerGestorben[playerid]=GetTickCount();
SpielerGestorben_[playerid]=true;Mit direkt meine ich nach der ersten Klammer, also wie folgt:
public OnPlayerDeath(playerid, killerid, reason)
{
//Hier den Code hin!SpielerGestorben[playerid]=GetTickCount();
SpielerGestorben_[playerid]=true;
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
} else {
//Restlicher Code..
return 1;
} -
Deine Post ist nicht aussagekräftig genug, und liefert uns somit nicht genug Informationen um dein Problem zu lösen. Ich bitte darum, dir für nächstes mal zu merken - dein Problem genauer zu erklären und die jeweiligen Codeabschnitte zu liefern. Dies ist nicht böse gemeint, nur eine Kritisierung - damit du schneller Hilfe erwarten kannst, und es für uns einfacher ist!
Du möchtest für jede Fraktion eine Datei(.txt) erstellen - sowie ich das verstanden habe. Doch wofür & was soll darein geschrieben werden?
-
Ohne den Code (Script Ausschnitt), kann dir hier kaum jemand helfen. Wenn du lieber Fernwartung via TeamViewer o.ä. möchtest - solltest du dies erwähnen. Niemand kann dein Problem lösen, wenn er nicht mal einsehen kann - wo das Problem/der Fehler steckt. Bitte denk nächstes mal daran, den benötigten Code mit zu posten, damit es zu keiner erhöten Wartezeit deiner sowie unserer Seite gibt. Betreffende Zeilen: Wo das Auto erstellt wird u. die Posistion gesetzt wird.
-
Zitat
ehm finde nicht schlecht bloß ist mein problem das der spieler sich selber nur nicht in fraktionsskin sieht kann man das nicht ändern,sodass man sich selber
in skin sieht?Deine Post ist nicht aussagekräftig genug, und liefert uns somit nicht genug Informationen um dein Problem zu lösen. Ich bitte darum, dir für nächstes mal zu merken - dein Problem genauer zu erklären und die jeweiligen Codeabschnitte zu liefern. Dies ist nicht böse gemeint, nur eine Kritisierung - damit du schneller Hilfe erwarten kannst, und es für uns einfacher ist!
-
Dann Debug doch auch die Funktion SyncUp - und schau ob diese jede Minute aufgerufen wird. Dazu wäre eine Wiedergabe das die Funktion bis zum Ende durchlief passend (return 1; o. return true;). Zusammengefasst:
public SyncUp()
{
print("[DEBUG] SyncUp() Start");
SyncTime();
print("[DEBUG] SyncUp() Mitte");
DollahScoreUpdate();
print("[DEBUG] SyncUp() Ende");
return true;
}