Bei ID einen empty String reinzuschreiben...macht ja auch soviel Sinn ![]()
Beiträge von Kaliber
-
-
Schreib es mal so:
#define CAR_AMOUNT MAX_VEHICLES
-
Zeig mal bitte wie du VehInfo und Gas deklariert hast

-
1. mysql_query ist verwaltet nutze mysqli oder PDO (PDO wäre am besten)
2. http://www.w3schools.com/sql/sql_insert.asp
Man kann zwar die Spalten Namen weglassen, doch dann kommt es nur zu fehlern, also schreibe sie am besten einfach hin

-
new PlayerTextDrawBackgroundColor[2]
;new CreatePlayerTextDraw[10]
Am Ende sollte nur noch das da stehen:new PlayerText:Statsbox[10];
#define MAX_FUELSTATION 20
enum tInfoPS: Wenn du willst, kannst du mir deine TeamViewer Daten per PN schicken, dann könnte ich dir besser helfen

-
Habe aber noch Probleme mit Zeile/Error 4063
Wenn du uns zeigst, was in der Zeile steht und wie du Statsbox deklariert hast...könnte man dir evtl helfen
-
enum tInfo
Was soll das da?
Einfach mal löschen

und hast du oben a_samp included?!

-
Hab ihm nun per TeamViewer geholfen, es klappt nun alles.
Das Problem war, dass er alles global geschrieben hatte.
mfg.

-
1. Schau nochmal auf mein edit @Sub_Royal: im Post davor.
2. Du musst das Makro (#define e^....) oben in dein Skript schreiben!!
3. Schreib es so:
new Float:x = e^(level);
new Float:deathcost = floatmul(x,2);mfg.

-
In der Log gibt es hunderte von den Zeilen.
Das ist richtig, aber sie haben alle etwas gemeinsam.Überall wird eine Array grenze überschritten > 699...die Wahrscheinlichkeit ist sehr hoch, dass es sich überall um das selbe Array handelt

Wenn wir nun dieses Array finden in dem Callback, dann den Wert anpassen (zu MAX_VEHICLES), dann ist der Fehler behoben (überall)

mfg.

-
Ich verstehe halt nicht sehr viel von Mathe. Daher weiß ich nicht, wie man "exponentiell" rechnet
ist es da auch moeglich mit der E-Funktion zu arbeiten, bzw. den Wert von e mit ^Level?
Ja ist es://Schreib das oben in dein Skript
#define e^(%0) floatpower(2.718281828459,(%0))//Nutzen kannst du es so:
new level = GetPlayerScore(playerid),Float:r=floatdiv(random(100),10);
new Float:kosten = 10*level*(!r?0.5:r)*e^(level);//Edit: Jetzt hast du genau deine 1. Formel

mfg.

-
Poste mal den Callback OnVehicleSpawn
mfg.

-
Könntest du mir die Werte erklären?
Dafür wurde das Wiki geschaffen: http://wiki.sa-mp.com/wiki/CreateExplosion_DEHier eine Liste mit Explosions IDs: http://wiki.sa-mp.com/wiki/Explosion_List
Wenn du so ne richtig fette Explosion willst:
CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 7, 10.0);
@[LnD]JustMe.77: Ja dein Code wurde in BBCodes ungewandelt, schau nochmal (hab ihn grad editiert beim 1. fehlte das [b ])

mfg.

-
oder muss das in mein Gamemode rein?
Der Timer muss dahin, wo du den anderen Code auch hingetan hast...Wenn du das alles in ein Filterscript schreibst, dann musst du SetTimer natürlich unter OnFilterScriptInit schreiben

Falls du das gemacht hast und es immernoch nicht geht, mach mal die Range höher (also unter @Bomb schreib es so):
if(IsPlayerInRangeOfPoint(i,4.5,
mfg.

-
Wie versendest du die Texte...verschlüsselt oder unverschlüsselt?
Wenn verschlüsselt, welche Verschlüsselungs-Technik verwendest du?

-
Kannst mir da auch noch helfen ?
Da musst du sowas ungefähr machen:#define MAX_MINES 100
enum e_Mines {
e_model,
Float:e__X,
Float:e__Y,
Float:e__Z
};new mines[MAX_MINES][e_Mines],bool:mine_t[MAX_PLAYERS char];
ocmd:mine(playerid)
{
if(mine_t{playerid}) return SendClientMessage(playerid,-1,"Bitte warte einen kurzen Moment, bevor du die Nächste Mine erstellst!");
new m_idx = GetFreeMine();
if(m_idx == MAX_MINES) return SendClientMessage(playerid,-1,"Es wurde bereits die maximale Anzahl an Minen erstellt!");
new Float:p[4];
GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
p[0] += (distance * floatsin(-p[3], degrees));
p[1] += (distance * floatcos(-p[3], degrees));
mine_t{playerid} = true;
mines[m_idx][e_model] = CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
mines[m_idx][e__X] = p[0],mines[m_idx][e__Y] = p[1],mines[m_idx][e__Z] = p[2];
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
SetTimerEx("@ta",1000*5,0,"i",playerid);
return 1;
}@ta(i);@ta(i) return mine_t{i}=false;
//Du brauchst einen Timer (unter OnGameModeInit)
SetTimer("@Bomb",599,1);//Dann irgendwo außerhalb von Callbacks..etc
@Bomb();@Bomb() {
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || mine_t{i}) continue;
for(new b; b<MAX_MINES; b++) {
if(!mines[b][e_model]) continue;
if(IsPlayerInRangeOfPoint(i,2.5,mines[b][e__X],mines[b][e__Y],mines[b][e__Z])) { PlayerOnMine(i,b); break; }
}
}
return 1;
}stock PlayerOnMine(playerid, b) {
//Hier ist halt die Explosion:
CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 12, 10.0);
DestroyObject(mines[b][e_model]),mines[b][e_model]=0;
SendClientMessage(playerid,-1,"BOOOOOOOOM!");
return 1;
}stock GetFreeMine() {
for(new i; i<MAX_MINES; i++) if(!mines[i][e_model]) return i;
return MAX_MINES;
}mfg.

//Edit: Kleinigkeiten
Edit²:So würde er aber schon beim erstellen der Mine, die Mine zum explodieren bringen

Ahaha danke, daran habe ich gar nicht gedacht #gefixxt
-
format(string, sizeof(string), "SERVER: %s ist nun afk. /afk",GetName);
Schreibe das zu:format(string, sizeof(string), "SERVER: %s ist nun afk. /afk",playername);
mfg.

-
Wie muss ich das ungefähr verändern?
Da musst du ein bisschen rumprobieren:ocmd:mine(playerid)
{
new Float:p[4];
GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
p[0] += (distance * floatsin(-p[3], degrees));
p[1] += (distance * floatcos(-p[3], degrees));
CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
return 1;
}mfg.

-
Was hab ich falsch gemacht?
Schreibe den Command so:CMD:back(playerid, params[])
{
if(PlayerAFK[playerid] == 1)
{
new string[128];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
TogglePlayerControllable(playerid,true);
format(string, sizeof(string), "SERVER: %s spielt nun weiter. /back",playername);
SendClientMessageToAll(LILA,string);
PlayerAFK[playerid] = 0;
return true;
}
return SendClientMessage(playerid,ROT,"FEHLER: Du bist nicht afk!");
}public AFK(playerid)
{
new string[128];
new playername[MAX_PLAYER_NAME];
KillTimer(isAFK);
TogglePlayerControllable(playerid,false);
GetPlayerName(playerid,playername,sizeof(playername));
format(string, sizeof(string), "SERVER: %s ist nun afk. /afk",GetName);
SendClientMessageToAll(LILA,string);
SendClientMessage(playerid,WEISS,"Beutze /back um weiter zu spielen.");
PlayerAFK[playerid] = 1;
return true;
}//Das hier schreibe unter OnPlayerCommandText ganz nach oben!
if(PlayerAFK[playerid] == 1)
{
SendClientMessage(playerid,ROT,"FEHLER: Während du afk bist kannst du keine Befehle benutzen. Um aus dem afk Modus heraus zu gelangen tippe /back ein.");
return true;
}mfg.

-
Spieler BOM_Plant Animation --> Game Crasht
Schreib die Animation mal so, dann klappt es:ApplyAnimation(playerid,"BOMBER","BOM_Plant_Loop",4.1,0,1,1,0,0,1);
mfg.
