In X-beliebigen selbst-gemappten Objekten geht das aber nicht.
Oh ja stimmt, habe das wohl überlesen
Dann geht es nur mit einem NPC
In X-beliebigen selbst-gemappten Objekten geht das aber nicht.
Oh ja stimmt, habe das wohl überlesen
Dann geht es nur mit einem NPC
Wie kann ich das hier mit den Menus der Shops verbinden?
Du prüfst ob GetPlayerMoney(playerid) < pInfo[playerid][Geld] ist...falls dies der Fall ist, setzt du pInfo[playerid][Geld] = GetPlayerMoney(playerid)
mfg.
Kann ich das so mit der Zeitangabe machen? (time*60*60)
ocmd:prison(playerid,params[])
{
new pID,time,string[256],plog[256];
if(sscanf(params,"uis[50]",pID,time,string))
{
return SendClientMessage(playerid,COLOR_RED,"Benutze /prison <ID> <Dauer> <Grund>");
}
ArrestPlayer(pID, ARREST_LOCATION_LSPD, time*60*60);
return 1;
}
Wenn du die Dauer in Stunden eingibst, aber Sekunden speichern willst, ja.
2 Stunden = 2 * 60 * 60 = 7200 Sekunden
Alles klar hat funktioniert, allerdings, wie kann ich es machen, dass der Spieler nach der "time" an eine bestimmte Position geportet wird?
/e: Und wie kann der Spieler mit einem Befehl abfragen, wie lange er noch im Prison ist?
Du machst einen Timer, der jede Sekunde durch alle Spieler loopt, und wenn die Variable in der die Zeit steht kleiner als gettime() ist, dann setzt du den Spieler an die bestimmte Position.
http://wiki.sa-mp.com/wiki/Loops
ocmd:prison(playerid,params[])
{
new pID,time,string[256],alog[256],msg[256];
if(sscanf(params,"uis[50]",pID,time,string))
{
return SendClientMessage(playerid,COLOR_RED,"Benutze /prison <ID> <Dauer> <Grund>");
}
ArrestPlayer(pID, ARREST_LOCATION_LSPD, time*60);
format(msg,sizeof(msg),"%s hat %s ins Prison geschickt. Grund: %s",GetName(playerid),GetName(pID),string);
SendClientMessageToAll(COLOR_RED,msg);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(time == 0) SetPlayerPos(pID, 0.0,0.0,0.0);
}
format(alog,sizeof(alog),"[PRISON] %s => %s => %s", GetName(playerid), GetName(pID), string);
log("admin",alog);
return 1;
}
So?
Eine kleine sache noch, wie kann ich einstellen, dass pID mit einem Befehl überprüfen kann, wie lange er noch im Prison ist?
In welcher Variable speicherst du die Prisonzeit?
Ich glaub' ich steh total auf dem Schlauch.
Wieso geht es nach der Gehalt-Abfrage nicht mehr weiter? Ich kann mir in etwa denken, wo der Fehler liegt nur irgendwie komme ich nicht auf die Lösung.
SetPVarInt(i,"Paydaytime",3600);
PaydaypP[i]=0;
pdcars[i]=0;
SCM(i,COLOR_BLUE,"|__________ Zahltag __________|");
//== Alter Kontostand
format(str,144,"Alter Kontostand: %i$",GetPVarInt(i,"Bank"));
SCM(i,COLOR_WHITE,str);
//== Gehalt
if(GetPVarInt(i,"Fraktion") > 0)
{
format(str,144,"Gehalt: %i$",GetPVarInt(i,"Rang")*750);
SCM(i,COLOR_WHITE,str);
PaydaypP[i]+=GetPVarInt(i,"Rang")*750;
}
//== Arbeitslosengeld
if(GetPVarInt(i,"Hartz4") == 1)
{
format(str,144,"Arbeitslosengeld: %i$",HARTZ4);
SCM(i,COLOR_WHITE,str);
PaydaypP[i]+=HARTZ4;
}
//== KFZ-Steuer
for(new is;is<MAX_VEHICLES;i++)
{
if(IsAPlayerCar(is))
{
if(!strcmp(PlayerName[i],CarInfo[is][c_Owner],true))
{
pdcars[i]++;
}
}
}
if(pdcars[i] > 0)
{
format(str,144,"Fahrzeugsteuer: %i$ (%i Fahrzeuge)",pdcars[i]*150,pdcars[i]);
SCM(i,COLOR_WHITE,str);
PaydaypP[i]-=pdcars[i]*150;
}
//== Zinsen
format(str,144,"Zinsen: %i$ (%i%%)",GetPVarInt(i,"Bank")/100*ZINSSATZ_PAYDAY);
SCM(i,COLOR_WHITE,str);
PaydaypP[i]+=GetPVarInt(i,"Bank")/100*ZINSSATZ_PAYDAY;
//== Geänderter Betrag
format(str,144,"Geänderter Betrag: %i$",PaydaypP[i]);
SCM(i,COLOR_WHITE,str);
//== Geld geben
AddOnePVar(i,"Bank",PaydaypP[i]);
//== Neuer Kontostand
format(str,144,"Neuer Kontostand: %i$",GetPVarInt(i,"Bank"));
SCM(i,COLOR_WHITE,str);
//== Respektpunkt
AddOnePVar(i,"Respektpunkte",1);
//== Variablen resetten
pdcars[i]=0;
PaydaypP[i]=0
Ich habe das so gemacht:
new vehTank[212] =
{
250,
175,
105,
650,
65,
85,
1450,
564,
234,
156,
80,
124,
134,
87,
87,
150,
235,
560,
123,
100,
100,
100,
150,
165,
65,
560,
120,
150,
250,
123,
256,
180,
750,
345,
85,
25,
134,
256,
100,
100,
100,
25,
124,
434,
734,
100,
700,
563,
35,
1000,
100,.....
wie muss ich es nun definieren:
#define GasMax
Was willst du denn machen?
Auf die Variable mit den maximalen Tank Mengen kannst du so zugreifen:
vehTank[GetVehicleModel(vehicleid)-400]
Wie kann ich das machen, dass man via Befehl den Bildschirm Weiß blinken zu lassen (jede skundr) dabei soll ein textdraw (du wirst getrollt) erscheinen.
Geht ziemlich einfach.
Du erstellst 2 Textdraws (TextDrawCreate) bei OnGameModeInit, eins davon ist einfach nur weiß und geht über den ganzen Bildschirm, und das andere ist das mit dem Text (nennen wir sie tdWeiss und tdText).
Unter die Includess:
new trollTimer[MAX_PLAYERS] = {-1,...};
Der Code würde dann so aussehen:
Im Befehl /troll [id]:
if(trollTimer[pID] != -1) KillTimer(trollTimer[pID]);
trollTimer[pID] = SetTimerEx("TrollPlayer", 1000, 1, "d", pID);
Bei /endtroll:
if(trollTimer[pID] != -1) KillTimer(trollTimer[pID]);
trollTimer[pID] = -1;
Ganz unten im Gamemode:
forward TrollPlayer(playerid);
public TrollPlayer(playerid)
{
static bool:trollStatus[MAX_PLAYERS];
if(trollStatus[playerid])
{
TextDrawHideForPlayer(playerid, tdText);
TextDrawHideForPlayer(playerid, tdWeiss);
trollStatus[playerid] = false;
}
else
{
TextDrawShowForPlayer(playerid, tdText);
TextDrawShowForPlayer(playerid, tdWeiss);
trollStatus[playerid] = true;
}
return 1;
}
Was willst du denn machen?
Auf die Variable mit den maximalen Tank Mengen kannst du so zugreifen:
vehTank[GetVehicleModel(vehicleid)-400]
Was willst du denn machen?
Auf die Variable mit den maximalen Tank Mengen kannst du so zugreifen:
vehTank[GetVehicleModel(vehicleid)-400]
Daraus entstehen folgende Errors:
C:\Users\Daniel\Desktop\irp.pwn(10042) : error 017: undefined symbol "vehicleid"
C:\Users\Daniel\Desktop\irp.pwn(10045) : error 017: undefined symbol "vehicleid"
C:\Users\Daniel\Desktop\irp.pwn(12410) : error 017: undefined symbol "vehicleid"
C:\Users\Daniel\Desktop\irp.pwn(13938) : error 017: undefined symbol "vehicleid"
C:\Users\Daniel\Desktop\irp.pwn(27456) : error 017: undefined symbol "vehicleid"
VID = GetPlayerVehicleID(playerid);
FillUp = GasMax - Gas[VID];//1.Error
if(Gas[VID] < GasMax){//2.Error
for(new veh = 0; veh < MAX_VEHICLES; veh++)
{
Gas[veh] = GasMax;
VehicleObject[veh] = -1;
}//3.Error
FillUp = GasMax - Gas[carid];//4Error
for(new veh = 0; veh < MAX_VEHICLES; veh++){
Gas[veh] = GasMax;
}//5.Error
Die Fehlermeldungen passen nicht zu den Code Zeilen. Da stimmt irgendwas nicht, schau nochmal nach.
Guten Tag Community,
ich habe mal so ne frage. Sehr viele kenne ja warscheinlich das Programm sobeit*, meine Frage ist jetzt kann man sowas Scripten das User z.B. Fliegen können(ist gedacht als ein teil meines Admin-Systems, damit Admins nicht immer porten müssen)?
Ich danke euch schonmal im Vorraus.
MFG _J0K3R_
*Sobeit ist ein Programm womit man in GTA SA Fliegen kann o.ä.
Die Fehlermeldungen passen nicht zu den Code Zeilen. Da stimmt irgendwas nicht, schau nochmal nach.
Hier:public Fillup(playerid)
{
if(IsPlayerConnected(playerid))
{
new VID,
FillUp,
string[256],
TankKosten;
VID = GetPlayerVehicleID(playerid);//hier
FillUp = GasMax - Gas[VID];
TogglePlayerControllable(playerid, 1);
if(Refueling[playerid] == 1){
if(Gas[VID] < GasMax){
for(new TB = 0; TB < sizeof(TankenBizInfo); TB++){
if(PlayerToPoint(5, playerid, TankenBizInfo[TB][TBPosX], TankenBizInfo[TB][TBPosY], TankenBizInfo[TB][TBPosZ]) && TankenBizInfo[TB][TBProducts] > 0){
TankKosten = FillUp * TankenBizInfo[TB][TBSpritPreis];
if(IsACopCar(VID) || IsAOAmtCar(VID) || IsAMedicCar(VID))
{
Gas[VID] += FillUp;
TankenBizInfo[TB][TBProducts] -= FillUp;
format(string,sizeof(string),"* Du hast deinen Dienstwagen für $%d auf Kosten des Staates betankt.", TankKosten);
SendClientMessage(playerid, COLOR_LIGHTBLUE,string);
TankenBizInfo[TB][TBKasse] += TankKosten;
ExtortionTankenBiz(TB, TankKosten/100*10);
Refueling[playerid] = 0;
Update3DTextTanke(TB);
}
Corvus:
In dem Code finde ich keine Variable oder sonst etwas was "vehicleid" heißt, daher kann es nicht sein, dass in den Zeilen "vehicleid" nicht definiert ist, es ist ja nicht verwendet.
Das einzige was mir auffällt ist, dass die Variable bei dir jetzt "Gas" heißt, und nicht mehr "vehTank".
Ansonsten passen die Error-Meldungen aber nicht zu dem Code, bzw. der Code nicht zu den Meldungen.