Beiträge von Templer
-
-
-
Machs also einfach so:
new gBusFahrer[MAX_VEHICLES]; //Siehe HIER
new gBusFare[MAX_PLAYERS]; //Siehe HIERpublic OnGameModeInit()
{
for(new vehicles = 0; vehicles < MAX_VEHICLES; vehicles++)
{
gBusFahrer[vehicles] = -1; //Siehe HIER
}
return 1;
}public OnPlayerConnect(playerid)
{
gBusFare[playerid] = 0; //Siehe HIER
return 1;
}dcmd_fare(playerid,params[])
{
new name[MAX_PLAYER_NAME], s[128];
new vehicleid = GetPlayerVehicleID(playerid);
new preis = strval(strget(params, 0));
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"acc/%s.ini",name);
new nj = dini_Int(s, "Nebenjob");
if(!strlen(params)) return SendClientMessage(playerid,Dunkelgrün,"/fare [Preis]");
if(preis < 1 || preis > 15) return SendClientMessage(playerid,Rot,"Der Fahrpreis muss zwischen 1$ und 15$ sein!");
if(nj == 1)
{
if(IsBusCar(vehicleid))
{
format(s, sizeof(s), "Busfahrer %s ist im dienst Preis: %d$", name, preis);
SendClientMessageToAll(Hellblau, s);
gBusFare[playerid] = preis; //Siehe HIER
gBusFahrer[GetPlayerVehicleID(playerid)] = playerid; //Siehe HIER
}
else
{
SendClientMessage(playerid, Rot, "Du bist in keinem Bus!");
}
}
else SendClientMessage(playerid, Rot, "Du bist kein Busfahrer!");
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_PASSENGER && gBusFare[gBusFahrer[GetPlayerVehicleID(playerid)]] != 0 && IsBusCar(GetPlayerVehicleID(playerid)))
{
GivePlayerMoney(playerid, -gBusFare[gBusFahrer[GetPlayerVehicleID(playerid)]]);
GivePlayerMoney(gBusFahrer[GetPlayerVehicleID(playerid)], gBusFare[gBusFahrer[GetPlayerVehicleID(playerid)]]);
new string[128], busname[MAX_PLAYER_NAME];
GetPlayerName(gBusFahrer[GetPlayerVehicleID(playerid)], busname, sizeof(busname));
format(string, sizeof(string), "Du hast %s für den Busticket %d$ bezahlt!", busname, gBusFare[gBusFahrer[GetPlayerVehicleID(playerid)]]);
SendClientMessage(playerid, 0xFFFFFF00, string);
}
if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT && gBusFare[playerid] != 0)
{
gBusFare[playerid] = 0;
gBusFahrer[GetPlayerVehicleID(playerid)] = -1;
}
return 1;
} -
Und der Gewinner ist Blackfox, mit seiner überragend schnellen Antwort in nur 20Sekunden, alle anderen bekommen den Trostpreis, dass sie wenigstens einen Beitrag zu Ihren Stats dazugewonnen haben ^^. Herzlichen Glückwunsch
-
Ai, diese billigen TextDraw Editoren gehören auf den Scheiterhaufen ^^.
Rechne logisch ^^.
Die Mitte von 600x460 ist ja, 300x230 und am besten noch TextDrawAlignment mittig stellen und dann passt alles, den Rest brauchst du nicht ^^. Außer du es verschönern willst.
Kurzgefasst: Erstell ein Textdraw mit deinem Stil, ersetz Koordinate und Ausrichtung mit meiner Empfehlung und fertig.
p.S.: Nebenbei gemerkt, die Koordinaten weichen von der Schriftgröße! Also bitte beachten!
-
Bei TextDrawCreate wurden in den Info Boxen alles erklärt ^^. Samp-Wikipedia lohnt sich halt um mir romane zu sparen .
-
-
Alles Klar Chefe, dann machnma bissl mehr Arbeit und dann funzt das wie Sau
Folgendes irgendwo in dein GameMode einfügen:
forward AntiGiveMoney(playerid, moneys);
public AntiGiveMoney(playerid, moneys)
{
PlayerMoney[playerid] = PlayerMoney[playerid]+(moneys);
return 1;
}
//Die Klammer ist wichtig, denn wenn der Betrag - ist, wird er natürlich auch abgezogen
//Mathe Info: ^^
// Wenn:
// +(-) = -
// -(+) = -
// -(-) = +
// +(+) = +In dein Filterscript oben (unter den Includes) fügst du dann folgendes ein:
#define GivePlayerMoney(%0, %1) CallRemoteFunction("AntiGiveMoney", "dd", %0, %1)Fertig, das wars Viel Spaß beim testen.
-
Ok, aber ich kann mich noch bissl errinnern als ich son ADAC Typ war auf nem Server, dass auch wenn ich ihn angehängt habe er bei mir nicht oben war und komischerweise nach ein paar Meter auf meinem Fahrzeug war. Bedeutet betätige den Befehl und fahr bissl herum, vl hängt er sich an ^^. Nebenbei gemerkt schau ob der Hänger hinten nach oben schaut ^^. Vom Scripting her ist alles in Ordnung.
-
Wie man am besten das Geld abrechned? Am besten wenn der Spieler einsteigt und als Passagier drinnen ist es abziehen und natürlich Abfragen vorher ob Busfahrer im Dienst ist. Was du benötigst von Samp her sind folgende Funktionen
- OnPlayerStateChange mit PLAYER_STATE_PASSENGER
- GetVehicleModel um abzufragen ob Spieler in Bus eingestiegen ist und Abfragen ob Busfahrer im Dienst ist.
- Das Geld per GivePlayerMoney abziehen.
Wenn ich dich falsch verstanden habe bitte genauer erläutern
-
Scripting Grundlagen mein Herr.. Wozu haben wir den das format ?
new zwischenspeicher[32];
format(zwischenspeicher, sizeof(zwischenspeicher), "%d $", Bizplaces[0][kosten2]);
AddMenuItem(Boerse2, 1, zwischenspeicher); -
Ich weiß jetzt ned ob du mich mit dem Kann mir vielleicht noch einer helfen? verscheuchen willst, aber wollt halt sagen das sowas als Tastendruck unter OnPlayerKeyStateChange gehören soll, da es manchmal nicht funktioniert und öfter hintereinander versuchen muss. Ansonsten ist deine Funktion GetNearestCar Falsch beim berechnen.
-
-
Nun auch ned die besten Varianten, aber aller Anfang ist scheiße
//Dieses stock sehr notwendig für beide Versionen
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li,aNum,len;
while(i <= strlen(strsrc))
{
if(strsrc[i]==delimiter || i==strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}//Diese Version geht nur für ein Fahrzeug (dcmd Befehl muss nicht verändert werden)
public OnGameModeInit()
{
new File:auto=fopen("carparks.ini",io_readwrite), str[128], cache[4][64];
if(auto)
{
fread(auto, str);
fclose(auto);
split(str, cache, ',');
//Wie kannst du nur vergessen die Modelid nicht zu speichern, also echt xD
//Nehme mal den Sultan
CreateVehicle(560, floatstr(cache[0]), floatstr(cache[1]), floatstr(cache[2]), floatstr(cache[3]), 1, 1, -1); //Von den Farben nicht zu reden..
}
return 1;
}//Dynamischere Version (Natürlich mit ModelID (ohne CarFarben FIX)
//jedoch auch nicht die beste Version ^^
//Mehrere Fahrzeuge verwaltwar, bzw abspeicherbardcmd_carpark(playerid,params[])
{
#pragma unused params
if(!IsPlayerInAnyVehicle(playerid))
{
return SendClientMessage(playerid,COLOR_ROT,"Du musst in einem Auto sein um /carpark zu machen");
}
new str[128],File:auto=fopen("carparks.ini",io_append),Float:Spawn[4];
GetVehiclePos(playerid,Spawn[0], Spawn[1], Spawn[2]); GetVehicleZAngle(playerid, Spawn[4]);
format(str,128,"%d,%f,%f,%f,%f;\n\r",GetVehicleModel(GetPlayerVehicleID(playerid)),Spawn[0],Spawn[1],Spawn[2],Spawn[3]);
fwrite(hFile,str);
fclose(hFile);
return 1;
}public OnGameModeInit()
{
#define MAX_FAHRZEUGE_IN_DATEI (500) //Anzahl an maximalen Fahrzeugen in einer Datei
new File:auto=fopen("carparks.ini",io_readwrite), str[512], cache[MAX_FAHRZEUGE_IN_DATEI][128], cache2[5][64], fahrzeug = 0;
if(auto)
{
fread(auto, str);
fclose(auto);
for(; fahrzeug < (MAX_FAHRZEUGE_IN_DATEI-1); fahrzeug++)
{
split(str, cache[fahrzeug], ';');
split(cache[fahrzeug], cache2, ',');
CreateVehicle(strval(cache2[0]), floatstr(cache2[1]), floatstr(cache2[2]), floatstr(cache2[3]), floatstr(cache2[4]), 1, 1, -1); //Von den Farben nicht zu reden..
}
}
return 1;
}Sollte also funktionieren
-
Also dir fehlt die Funktion DetachTrailerFromVehicle, also:
if(strcmp(cmd, "/attach", true) == 0)
{
if(Meschaniker[playerid] == 1)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
{
DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
AttachTrailerToVehicle(GetNearestCar(playerid, 7), GetPlayerVehicleID(playerid));
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du musst in einen Schlepper!");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du musst zuerst in ein Auto!");
}
return 1;
}
}p.S.: Manche Fahrzeuge können nicht abgeschleppt werden wie Anhänger oder Motorräder
-
Du hast die Lösung eigentlich schon gesagt, entferne den bool: Tag Bleibt ja eh alles gleich.
-
ai Bs = bootschein.. Wow auf das muss man auch kommen
-
Najo es ist ja eigentlich kein Fehler Probiers mal halt aus, ansonsten nimm den Boolean Tag weg.. Aber versuchs, manchmal gibt PWN auch fehlerhafte Warnings ab
-
Nix verguckt, siehe da
if(IsNoBs(vehicleid))
auch wenn ich ein u hinzugefügt habe, meinst eh das gleicheAber ja also der Text kommt halt nur, wenn der Spieler die Nebenjob ID 1 hat is eh klar oder? Also wie vorhin erwähnt ist der Code in Ordnung, auch wenn mir rätselhaft ist, dass jeder auf dini meint und die Variablen sofort abspeichern muss ^^.
-
Nene ich meine deine Funktion heißt IsNoBus, obwohl du meinst ob er in einem Bus drinnen sitzt? xD