Ja ich speichere es bei SaveUserStats und das mit +=menge war nur zum test @Whice.
Beiträge von KinGRaPTiiC
-
-
Finde die Map ja mal mega! wünschte könnte auch so gut Mappen aber meistens kommt irgendein zusammengewürfelter 0815 kram bei raus
10/10
-
@Jeffry mit dem if(sscanf(params,"ii",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
hat es funktioniert danke dir/edit habe ein weiteres Problem:
Ingame sieht es so aus:
http://prntscr.com/gongh5und so sieht meine Datenbank aus:
http://prntscr.com/gonh6xso sieht mein pDataEnum aus:
enum pDataEnum
{
p_id,
bool:pLoggedIn,
pName[MAX_PLAYER_NAME],
pLevel,
pMoney,
pKills,
pDeaths,
pAlevel,
pFraktion,
pRank,
pPerso,
pSpawnchange,
pPayday,
pXP,
pXPMax,
pCarlic,
pBikelic,
pFlylic,
pWaffenlic,
pBoatlic,
pDrugs,
pStartbonus,
pMats,
pMatpacks,
pBusfahrer,
pLandwirt,
pStrassenfeger,
pDrogendealer,
pHure,
pWaffendealer
}und so sieht mein gesamter /set code aus:
ocmd:set(playerid,params[])
{
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
new pID,string[128],cmd[30],menge;
if(sscanf(params,"usi",pID,cmd,menge))
{
SendClientMessage(playerid,GELB,"[INFO]: /set [playerid/Name][Aktion] [Menge/Betrag]");
return SendClientMessage(playerid,GRAU,"[Bank/Level/Skin/Geld/Respektpunkte/Drogen/Mats]");
}
if(strcmp(cmd,"Level",true) == 0)
{
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
if(menge<1||menge>100)return SendClientMessage(playerid,GELB,"/set Level [playerid/Name][Level 1-100]");
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dein Level auf %i gesetzt.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) das Level auf %i gesetzt.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SetPlayerLevel(pID,menge);SaveUserStats(pID);
}
if(strcmp(cmd,"Skin",true) == 0)
{
if(menge<1||menge>311)return SendClientMessage(playerid,GELB,"/set Skin [playerid/Name][1-311]");
SetPlayerSkin(pID,menge);
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID: %i) hat dir den Skin %i zugewiesen.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) den Skin %i zugewiesen.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SaveUserStats(pID);
}
if(strcmp(cmd,"Geld",true) == 0)
{
if(menge<1||90000000)return SendClientMessage(playerid,GELB,"/set Geld [playerid/Name][1-90000000]");
ResetPlayerMoney(pID);
GivePlayerMoney(pID, menge);
PlayerInfo[pID][pMoney] = menge;
format(string, sizeof(string), "AdmCmd: %s hat dein Geld auf $%i gesetzt.", SpielerName(playerid), menge);
SendClientMessage(pID, HELLBLAU, string);
format(string, sizeof(string), "AdmCmd: Du hast %s den Geldbetrag auf $%i gesetzt.", SpielerName(pID), menge);
SendClientMessage(playerid, HELLBLAU, string);
SaveUserStats(pID);
}
if(strcmp(cmd,"Drogen",true) == 0)
{
PlayerInfo[pID][pDrugs] += menge;
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Drogen auf %i gesetzt.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) die Drogen auf %i gesetzt.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SaveUserStats(pID);
}
if(strcmp(cmd,"Mats",true) == 0)
{
PlayerInfo[pID][pMats] = menge;
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Mats auf %i gesetzt.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) die Mats auf %i gesetzt.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SaveUserStats(pID);
}
return 1;
}und da wäre noch etwas wenn ich /set 0 Geld [menge] angebe sieht so aus:
kommt halt immer diese Nachricht die im Chat auf dem Screenshot ist.
Mfg.
-
Es kommt aus irgendeinem Grund immer SERVER: Unknown Command
ocmd:veh(playerid,params[])
{
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
new mID, pID;
if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
if(mID<=400 ||mID>611)return SendClientMessage(playerid,DUNKELROT,"Ungültige Model ID!");
new Float:xc,Float:yc,Float:zc,Float:rc;
GetPlayerPos(playerid,xc,yc,zc);
GetPlayerFacingAngle(playerid,rc);
createPlayerCar(pID,mID,xc,yc,zc,rc);
return 1;
}
Aber wenn ich z.B /veh [SPIELERID] [FahrzeugID] eingebe kommt Ungültige Model ID!aber anders rum SERVER: Unknown Command
-
Wenn ich /agivelicense mache bleibt es in der Datenbank trotzdem noch auf 0 was mache ich falsch selbst nach einem Disconnect:
ocmd:agivelicense(playerid,params[])
{
new pID, licname[20];
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
if(sscanf(params,"us",pID,licname))return SendClientMessage(playerid,GELB,"[INFO]: /givelicense [ID] [Auto, Motorrad, Boot, Flug, Waffen, Alle]");
if(strcmp(licname,"Auto",true)==0)
{
PlayerInfo[playerid][pCarlic]=1;
SaveUserStats(playerid);
}
else if(strcmp(licname,"Motorrad",true)==0)
{
PlayerInfo[playerid][pBikelic]=1;
SaveUserStats(playerid);
}
else if(strcmp(licname,"Boot",true)==0)
{
PlayerInfo[playerid][pBoatlic]=1;
SaveUserStats(playerid);
}
else if(strcmp(licname,"Flug",true)==0)
{
PlayerInfo[playerid][pFlylic]=1;
SaveUserStats(playerid);
}
else if(strcmp(licname,"Waffen",true)==0)
{
PlayerInfo[playerid][pWaffenlic]=1;
SaveUserStats(playerid);
}
else if(strcmp(licname,"Alle",true)==0)
{
PlayerInfo[playerid][pCarlic]=1;
PlayerInfo[playerid][pBikelic]=1;
PlayerInfo[playerid][pBoatlic]=1;
PlayerInfo[playerid][pFlylic]=1;
PlayerInfo[playerid][pWaffenlic]=1;
SaveUserStats(playerid);
}
else SendClientMessage(playerid,GELB,"[INFO]: /agivelicense [ID] [Auto, Motorrad, Boot, Flug, Waffen, Alle]");
return 1;
} -
Also die erste sieht am einfachsten aus
-
Ich habe eine frage und zwar möchte ich das wenn ich /scheine eingebe dort steht Führerschein bestanden aber das soll dann z.B so aussehen:
SendClientMessage(playerid,x,"Führerschein<- WEISS -> GRÜN bestanden // oder
SendClientMessage(playerid,x,"Führerschein<- WEISS -> ROT nicht bestandenaber wie mache ich das dass script erkennt das wenn PlayerInfo[playerid][pCarlic] = 1;
dort halt bestanden steht?
-
Wie gesagt der letzte Checkpoint wird nicht "gelöscht" aber alle anderen schon wird jetzt zwar nicht viel bringen aber hier wie es aussieht:
codes:
public OnPlayerEnterCheckpoint(playerid)
{
if(GetPVarInt(playerid, "fs_start"))
{
new cID = GetPVarInt(playerid, "fs_cp");
if(IsPlayerInRangeOfPoint(playerid, 5, fsCPs[cID][fs_x], fsCPs[cID][fs_y], fsCPs[cID][fs_z]))
{
cID++;
if(cID > sizeof(fsCPs))
{
PlayerInfo[playerid][pCarlic] = 1;
}
else
{
SetPVarInt(playerid, "fs_cp", cID);
SetPlayerCheckpoint(playerid, fsCPs[cID][fs_x], fsCPs[cID][fs_y], fsCPs[cID][fs_z], 5);
}
return 1;
}
}
DisablePlayerCheckpoint(playerid);
return 1;
}ocmd:fahrschule(playerid, params[])
{
new Float:xc, Float:yc, Float:zc, Float:ac;
GetPlayerPos(playerid, xc,yc,zc);
GetPlayerFacingAngle(playerid,ac);
new vID = CreateVehicle(405, xc, yc, zc, ac, 1, 1, -1);
SetPVarInt(playerid, "fs_car", vID);
PutPlayerInVehicle(playerid, vID, 0);
SetPlayerCheckpoint(playerid, fsCPs[0][fs_x], fsCPs[0][fs_y], fsCPs[0][fs_z], 5);
SetPVarInt(playerid, "fs_cp", 0);
SetPVarInt(playerid, "fs_start", 1);
return 1;
}wenn noch was fehlt bescheid geben
-
mein Tank kram:
public Sekunde(playerid)
{
new sekunden,minuten,stunden,string[128];
gettime(stunden,minuten,sekunden);
format(string,sizeof(string),"%02d:%02d:%02d",stunden,minuten,sekunden);
TextDrawSetString(TDEditor_TD[0],string);
TextDrawShowForPlayer(playerid,TDEditor_TD[0]);
new string1[128];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInAnyVehicle(i))continue;
new vID = GetPlayerVehicleID(i);
format(string1, sizeof(string), "Tank: %i%%", tank[vID]);
PlayerTextDrawSetString(i,TDEditor_PTD[i][5],string1);
}
tanktimer++;
if(tanktimer == 5)
{
tanktimer = 0;
//Tanks red.
for(new i=0; i<MAX_VEHICLES; i++)
{
if(isMotorOn(i))continue;
tank[i]--;
}
}
return 1;
}und meine isMotorOnFunktion:
isMotorOn(vID)
{
new tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;
GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
if(tmp_engine == 1)return 1;
return 0;
} -
@Kaliber habe es halt einfach wie im Tutorial gemacht
/edit Verliere den Tank nur wenn der Motor aus ist
-
Zitat von Kasakow
@KinGRaPTiiC
Das hat sich zur Info seit den neuen Versionen ein bisschen umgestellt, les dir mal die aktuelle Wiki durch;)@Kasakow Vielen Dank wusste nicht das es das gibt vielleicht hab ich jetzt mal weniger Probleme
/edit Frage:
Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b
-
einer eine ahnung?
C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\selfmade.pwn(3805) : warning 213: tag mismatch
C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\selfmade.pwn(3806) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase2 Warnings.
cache_get_value_name(i, "besitzer", hInfo[id][h_besitzer], handle);
hInfo[id][h_id]=cache_get_value_name_int(i, "id", handle); -
funktioniert immer noch nicht... aktueller code:
new tanktimer =0;
public Sekunde(playerid)
{
new sekunden,minuten,stunden,string[128];
gettime(stunden,minuten,sekunden);
format(string,sizeof(string),"%02d:%02d:%02d",stunden,minuten,sekunden);
TextDrawSetString(TDEditor_TD[0],string);
TextDrawShowForPlayer(playerid,TDEditor_TD[0]);
new string1[128];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInAnyVehicle(i))continue;
new vID = GetPlayerVehicleID(i);
format(string1, sizeof(string), "Tank: %i%%", tank[vID]);
PlayerTextDrawSetString(i,TDEditor_PTD[i][5],string1);
}
tanktimer++;
if(tanktimer == 25)
{
tanktimer = 0;
//Tanks red.
for(new i=0; i<MAX_VEHICLES; i++)
{
if(isMotorOn(i))continue;
tank[i]--;
}
}
return 1;
} -
@Mogly1 danke erstmal jetzt steht da aber immer 100% und es wird nichts abgezogen... sollte eig nach 25 sekunden der fall sein
-
@Mogly1 hat leider nichts gebracht sieht Ingame halt so aus: http://prntscr.com/gkqhsz
-
Ja sind halt leider etwas älter die Videos die ich dazu angucke keine ahnung ob sich da was ändert oder so will auch ungern immer Threads erstellen aber wenn ich nicht weiterkomme :DD @Dr.4nd3rs0n
-
Hey ich weiß nicht richtig wie ich es beschreiben soll ich zeig einfach mal das was ich habe auf jedenfall wird im Textdraw nur %i angezeigt....
new tanktimer =0;
public Sekunde(playerid)
{
new sekunden,minuten,stunden,string[128];
gettime(stunden,minuten,sekunden);
format(string,sizeof(string),"%02d:%02d:%02d",stunden,minuten,sekunden);
TextDrawSetString(TDEditor_TD[0],string);
TextDrawShowForPlayer(playerid,TDEditor_TD[0]);
new string1[128];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))continue;
if(IsPlayerInAnyVehicle(i))continue;
new vID = GetPlayerVehicleID(i);
format(string1, sizeof(string), "Tank: %i%%", tank[vID]);
PlayerTextDrawSetString(i,TDEditor_PTD[i][5],string1);
}
tanktimer++;
if(tanktimer == 26)
{
tanktimer = 0;
//Tanks red.
for(new i=1; i<sizeof(tank); i++)
{
if(isMotorOn(i))continue;
tank[i]--;
}
}
return 1;
}Unter OnGameModeInit:
for(new i=0; i<sizeof(tank); i++)
{
tank[i]=100;
}TDEditor_PTD[playerid][5] = CreatePlayerTextDraw(playerid, 512.588256, 384.250122, "Tank: %i");
PlayerTextDrawLetterSize(playerid, TDEditor_PTD[playerid][5], 0.400000, 1.600000);
PlayerTextDrawAlignment(playerid, TDEditor_PTD[playerid][5], 1);
PlayerTextDrawColor(playerid, TDEditor_PTD[playerid][5], -1);
PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][5], 0);
PlayerTextDrawSetOutline(playerid, TDEditor_PTD[playerid][5], 0);
PlayerTextDrawBackgroundColor(playerid, TDEditor_PTD[playerid][5], 255);
PlayerTextDrawFont(playerid, TDEditor_PTD[playerid][5], 1);
PlayerTextDrawSetProportional(playerid, TDEditor_PTD[playerid][5], 1);
PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][5], 0);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][5]);public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate==PLAYER_STATE_DRIVER)
{
new vID=GetPlayerVehicleID(playerid);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][0]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][1]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][2]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][3]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][4]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][5]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][6]);
if(!hasEngine(vID))
{
new a,b,c,d,e,f;
//Motor an/ausschalten
GetVehicleParamsEx(vID, a,a,b,c,d,e,f);
SetVehicleParamsEx(vID, 1, a,b,c,d,e,f);
}
for(new i=0; i<sizeof(ahCars); i++)
{
if(ahCars[i][id_x]!=vID)continue;
//Verkaufsprozess
SetPVarInt(playerid,"buyCarID",i);
new string[256];
format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
break;
}
return 1;
}
if(newstate==PLAYER_STATE_ONFOOT)
{
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][0]);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][1]);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][2]);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][3]);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][4]);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][5]);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][6]);
}
return 1;
}sollte etwas fehlen bescheid sagen und schaue dann ob ich es im script habe //habe zudem keine Errors/Warnings
-
Also Ingame wird mein Textdraw jetzt angezeigt aber wie gesagt egal wie schnell ich fahre es bleibt bei 0 Km/h
das was ich jetzt alles habe mein Textdraw unter OnGameModeInit:
TDEditor_PTD[playerid][4] = CreatePlayerTextDraw(playerid, 512.588134, 344.583435, "Km/h: %d");
PlayerTextDrawLetterSize(playerid, TDEditor_PTD[playerid][4], 0.341176, 2.667503);
PlayerTextDrawAlignment(playerid, TDEditor_PTD[playerid][4], 1);
PlayerTextDrawColor(playerid, TDEditor_PTD[playerid][4], -1);
PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][4], 0);
PlayerTextDrawSetOutline(playerid, TDEditor_PTD[playerid][4], 0);
PlayerTextDrawBackgroundColor(playerid, TDEditor_PTD[playerid][4], 255);
PlayerTextDrawFont(playerid, TDEditor_PTD[playerid][4], 1);
PlayerTextDrawSetProportional(playerid, TDEditor_PTD[playerid][4], 1);
PlayerTextDrawSetShadow(playerid, TDEditor_PTD[playerid][4], 0);
PlayerTextDrawHide(playerid, TDEditor_PTD[playerid][4]);Timer unter OnGameModeInit:
SetTimer("Tacho", 250, 1);
und das public Tacho forward ist auch vorhanden aber woanders:
public Tacho()
{
for(new i=GetPlayerPoolSize(),string[32]; i!=-1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !IsPlayerInAnyVehicle(i)) continue;
format(string,sizeof(string),"Km/h: %d",getPlayerSpeed(i));
PlayerTextDrawSetString(i,TDEditor_PTD[i][4],string);
}
return 1;
}und das ist unter OnPlayerStateChange:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate==PLAYER_STATE_DRIVER)
{
new vID=GetPlayerVehicleID(playerid);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][0]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][1]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][2]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][3]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][4]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][5]);
PlayerTextDrawShow(playerid, TDEditor_PTD[playerid][6]);
if(!hasEngine(vID))
{
new a,b,c,d,e,f;
//Motor an/ausschalten
GetVehicleParamsEx(vID, a,a,b,c,d,e,f);
SetVehicleParamsEx(vID, 1, a,b,c,d,e,f);
}
for(new i=0; i<sizeof(ahCars); i++)
{
if(ahCars[i][id_x]!=vID)continue;
//Verkaufsprozess
SetPVarInt(playerid,"buyCarID",i);
new string[256];
format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
break;
}
return 1;
}
return 1;
}das meiste hat halt nichts mit dem Tacho bei OnPlayerStateChange zu tun aber hab einfach das gesamte public reingemacht
Mfg.
-
@Kaliber Nein Nein das wollte ich jetzt nicht von dir
Zitat von KaliberWillst du von mir, dass ich dir den ganzen Code auf einem Silber-Tablett serviere oder wie?
Benuzte meistens SetTimer aber werde es einfach mal jetzt versuchen bin einfach grad nur ziemlich müde etc. danke dir trotzdem wenn was ist meld ich mich
-
@Kaliber wie soll ich bitte einen Timer erstellen der sich alle 250ms aktualisiert
Und wie aktualisiere ich das?