Ja wenn ReturnUser und IsNumeric nicht erkannt werden, kann die Sache nicht funzen
Beiträge von 8D
-
-
Na dann, bin doch noch nicht eingerostet
-
Zum 1.
Guck doch mal
ZitatTextdraw2 = TextDrawCreate(1.000000,1.000000," German Stunt Server");
TextDrawAlignment(Textdraw2,0);
TextDrawBackgroundColor(Textdraw2,0x000000ff);
TextDrawFont(Textdraw2,3);
TextDrawLetterSize(Textdraw2,1.000000,1.000000);
TextDrawColor(Textdraw2,0xffffffff);
TextDrawSetOutline(Textdraw2,1);
TextDrawSetProportional(Textdraw2,1);
TextDrawSetShadow(Textdraw2,1);
TextDrawShowForAll(Text:Textdraw0);Du redest die ganze Zeit von Textdraw2, willst am ende aber Textdraw0 anzeigen lassen.
Also ändere
TextDrawShowForAll(Text:Textdraw0);
zu
TextDrawShowForAll(Textdraw2);
bei GameModeInIt.
-
Du musst dann ja auch
if(PlayerInfo[playerid][kills] < KillInfo[i][1])
und nicht
if(kills[playerid] < KillInfo[i][1])
nehmen.
Und bei OnPlayerDeath:
PlayerInfo[killerid][kills]+=1;
-
Im Vgl dazu ohne Ex:
Ein sich wiederholender 1 Sekunden Timer wird gebraucht.
public SucideTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(WillSterben[i] > 0)
{
WillSterben[i]++;
}
if(WillSterben[i] == 16)
{
SetPlayerHealth(i,0.0);
WillSterben[i] = 0;
}
}
}if(strcmp(cmdtext,"/sucide",true,7)
{
WillSterben[playerid] = 1;
return 1;
} -
Hö vom Code sehe ich keinen Fehler mehr
Jop @ Arty -
Jo ich weiß auch warum, ich habe doch keinen Fehler gemacht Also ist das jetzt doppelt gemoppelt mit der ID bei mir Kann also nicht funzen.
Ersetz wieder:CheckKillCars(playerid,vehiclemodel);
mit
CheckKillCars(playerid,vehicleid);
bei OnPlayerstatechange.
Dann geht das.
-
Oben:
new choosetimer;
forward Info();/ganz oben bei den anderen Forwards
SetTimer("Info", 150000, 1);//unter OnGameModeInitpublic Info()
{
choosetimer+=1;
if(choosetimer == 1) // 150.000ms
{
//Hier dein zweiter Text rein
}
else if(choosetimer == 2) // 300.000ms wie vorher auch (2*150.000)
{
SendClientMessageToAll(COLOR_WHITE, "======Regelaufruf======");
SendClientMessageToAll(COLOR_BLUE, "Regelwerk und Verkehrsordnung im Forum unter");
SendClientMessageToAll(COLOR_BLUE, "www.gr-projekt.de");
SendClientMessageToAll(COLOR_WHITE, "--------------------------------------------------");
SendClientMessageToAll(COLOR_BLUE, " Bei Waffenscheinabnahme 48h Sperre!");
SendClientMessageToAll(COLOR_WHITE, "===============================================");
choosetimer = 0; // wieder zurürcksetzen ist wichtig!
}
return 1;
}//das hab ich ganz unten -
if (strcmp("/gpns", cmdtext, true, 5) == 0)
{
if(gTeam[playerid] == 1)
{
SetPlayerPos(playerid, 1829.0084,-1680.9541,13.5469);
return 1;
}
else if(gTeam[playerid] == 2)
{
SetPlayerPos(playerid, 2124.6208,-1947.1683,13.5469);
return 1;
}}
-
Was soll denn das zweite sein? Code? Soll es gleichezeitig mit dem anderen Text gezeigt werden oder in welchem Intervall?
-
Was soll das Problem sein?!
-
new Kills[MAX_PLAYERS];
OnPlayerDeath:
Kills[killerid]+=1;
Dann musst du die Kills halt in dem Account speichern.
Das für das Kills Problem
Und zum rest:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
new vehiclemodel = GetVehicleModel(vehicleid);
CheckKillCars(playerid,vehiclemodel);if(vehiclemodel == 416)
{
new rand = random(3), Float:Health;
if(rand == 1)
{
SendClientMessage(playerid,COLOR_RED,"- blabla");
if(GetPlayerHealth(playerid, Health) > 60) SetPlayerHealth(playerid,100);
else SetPlayerHealth(playerid,Health+(rand*13));
}
}
}
if (newstate == 2) KillTimer(dbtime);
if (newstate == PLAYER_STATE_ONFOOT) AntiDriveBy(playerid);
return 1;
}Wir haben uns beide vertan.
Wir sprechen die ganze Zeit von der MODEL-ID aber haben die vehicleid benutzt -
-
Das ist noch Geiler Danke dir werde es gleich mal testen
Und funktioniert?
-
Vielleicht solltest du deinen Satz richtig beenden
-
Naja ich benutz in jedem Callback ein neuen string und den nicht global.
Aber dafür dann nicht bei jedem Command neu sondern wie gesagt nur im Callback. -
Ist aber (finde ich zumindest) schwerer weil es mit Dialogen gemacht es, sieht aber besser aus und spart ein bisschen Zeit.
Nicht wirklich.
Ja gibt es. Einfach mal im Tutorial Bereich suchen -
Jupp es gibt Parameter die du direkt verwenden kannst, wie z.B playerid.
So erspart man sich die for schleifen. -
Benutz doch SendTeam und nicht SendRadio Message
-
Gibt zwei arten:
else if(GetVehicleModel(vehicleid) == 401 && Kills[playerid] < 150) // 401 zur Model ID ändern die du abfragen willst, und bei 150 die Kills.
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,COLOR_GRAD2,"Für dieses Fahrzeug brauchst zu 150 Kills!");
}Oder aber du machst das so: (dynamisch)
#define KILL_CARS 4 // 4 = Anzahl der Autos
new KillInfo[KILL_CARS][2] = {
{400,200},// Nach dem Schema Model-ID, Kills
{401,150},
{402,125},
{403,100}
};forward CheckKillCars(playerid,vehicleid);
Den Scheiß bei if(newstate == PLAYER_STATE_DRIVER) was ihr dir vorgeschlagen habe, wieder entfernen und das einfügen.
new vehicleid = GetPlayerVehicleID(playerid);
CheckKillCars(playerid,vehicleid);Und dann irgendwo im Script:
public CheckKillCars(playerid,vehicleid)
{
new string[128];
for(new i = 0; i <= KILL_CARS; i++)
{
if(GetVehicleModel(vehicleid) == KillInfo[i][0])
{
if(Kills[playerid] < KillInfo[i][1])
{
RemovePlayerFromVehicle(playerid);
format(string,128,"Nicht genügend Kills! Benötigt %d!",KillInfo[i][1]);
SendClientMessage(playerid,COLOR_GRAD2,string);
return 1;
}
}
}
return 1;
}Ist ungetestet, sollte aber funktionern.
Es ist bei weitem einfacher Autos hinzuzufügen, einfach die #define Variable erhöhen immer und dann das Auto nach dem Schema Model-ID, Kills einfügen.