Was vllt auch paar Leuten helfen könnte auch wieder ein Thema zu Toplisten nur diesmal mit MySQL.
new Text: topbox;
enum TopDriver{
tdName[MAX_PLAYER_NAME],
tdZeit,
};
new DriverInfo[5][TopDriver];
new count;
topbox = TextDrawCreate(260.000000, 199.000000, "~n~");
TextDrawBackgroundColor(topbox, 255);
TextDrawFont(topbox, 1);
TextDrawLetterSize(topbox, 0.200000, 1.000000);
TextDrawColor(topbox, -1);
TextDrawSetOutline(topbox, 0);
TextDrawSetProportional(topbox, 1);
TextDrawSetShadow(topbox, 1);
public OnPlayerEnterRaceCheckpoint(playerid)
{
new string[128];
if(IsPlayerInRangeOfPoint(playerid,2042.6235,1099.7368,10.6719,5.0)){
new rtime, sek , minutes , pName[MAX_PLAYER_NAME];
DisablePlayerRaceCheckpoint(playerid);
rtime = GetTickCount() - count;
new sql[128];
GetPlayerName(playerid,pName,sizeof(pName));
format(sql,128,"INSERT INTO `Zeiten`(Name,Zeit) VALUES ('%s','%d')",pName,rtime);
mysql_function_query(g_ConnectionHandle, sql, false, "", "i", playerid);
minutes=rtime/60000;
rtime-=(60000*minutes);
sek=rtime/1000;//sekunden
rtime -=(sek*1000);
format(string,128,"Deine Zeit: d:d",minutes,sek);
SendClientMessage(playerid,-1,string);
mysql_function_query(g_ConnectionHandle, "SELECT `Name`,`Zeit` FROM `Zeiten` ORDER BY `Zeit` ASC", true, "NewBestlist", "");
}
return 1;
}
forward NewBestlist();
public NewBestlist()
{
new temp[30], gesammt[500],rang,sek,minutes;
for(new i; i < 5; i++){
cache_get_row(i, 0, DriverInfo[i][tdName]);
cache_get_row(i, 1, temp);
DriverInfo[i][tdZeit] = strval(temp);
rang += 1;
minutes=DriverInfo[i][tdZeit]/60000;
DriverInfo[i][tdZeit]-=(60000*minutes);
sek=DriverInfo[i][tdZeit]/1000;//sekunden
DriverInfo[i][tdZeit] -=(sek*1000);
format(gesammt, sizeof(gesammt), "%s~n~~b~%d. ~w~%s - ~r~Zeit: d:d",gesammt,rang,DriverInfo[i][tdName],minutes,sek);
}
TextDrawSetString(topbox, gesammt);
TextDrawShowForAll(topbox);
return 1;
}
ocmd:start(playerid,param[])
{
new car;
car = CreateVehicle(560,2043.5396,1307.9452,10.6719,178.8549,0,0,-1);
PutPlayerInVehicle(playerid,car,0);
SetPlayerRaceCheckpoint(playerid,1,2042.6235,1099.7368,10.6719,0.0,0.0,0.0,5.0);
count = GetTickCount();
return 1;
}
und dazu noch ein screen.
Ich hab mir gedacht da ich nix dazu heute gefunden habe und Benjamin hatte es mal in dem Thread von Rocky angesprochen so bin ich auf die Idee gekommen
so was zu releasen beziehungsweise den codeschnipsel zu posten.
//edit
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Da mich Gestern jemand gefragt hatte wie man das CTF hin bekommt was jedoch sehr simpel ist wollte ich das hier auch noch hinzufügen
der Code ist zwar nicht perfekt gebe ich auch selbst zu, aber als Beispiel Code reicht er vollkommen aus ^^.
#define MAX_ZONE 3
new CTFTimer[MAX_PLAYERS];
new flagge[MAX_PLAYERS];
new ctfpickup1[MAX_ZONE];
new ctfpickup2[MAX_ZONE];
new ctftime[MAX_PLAYERS];
new ZonenInfo[MAX_ZONE][zonen] ={
{1,1691.416, -1677.914, 1759.867, -1583.168, 1537.5564, -1660.4182, 83.5469, 1536.3740, -1712.6566, 83.5469,0xF60000F6},
{2,1436.625, -1764.764, 1611.556, -1618.698, 1537.5564, -1660.4182, 13.5469, 1536.3740, -1712.6566, 13.5469,0xF60000F6},
{3,1159.018, -959.4252, 1292.118, -864.6794, 1537.5564, -1660.4182, 83.5469, 1536.3740, -1712.6566, 83.5469,0xF60000F6}
};
new zone[MAX_ZONE];
for(new i; i< MAX_ZONE; i++){
zone[i] = GangZoneCreate(ZonenInfo[i][zPosX],ZonenInfo[i][zPosX1],ZonenInfo[i][zPosY],ZonenInfo[i][zPosY1]);
ctfpickup1[i] = CreatePickup(1239, 1, ZonenInfo[i][ctf1X], ZonenInfo[i][ctf1Y], ZonenInfo[i][ctf1Z], -1);
ctfpickup2[i] = CreatePickup(1239, 1, ZonenInfo[i][ctf2X], ZonenInfo[i][ctf2Y], ZonenInfo[i][ctf2Z], -1);
Create3DTextLabel("Benutze hier\n /ctf \n Um eine Flagge zu nehmen", -1, ZonenInfo[i][ctf1X], ZonenInfo[i][ctf1Y], ZonenInfo[i][ctf1Z], 100.0, 0);
Create3DTextLabel("Geh mit der Flagge\n In den Punkt", -1, ZonenInfo[i][ctf2X], ZonenInfo[i][ctf2Y], ZonenInfo[i][ctf2Z], 100.0, 0);
}
ocmd:ctf(playerid,params[])
{
#pragma unused params
new i, bool:dort;
if(flagge[playerid] != 0) return SendClientMessage(playerid,-1,"Du hast schon eine Flagge");
for(; i < sizeof(ZonenInfo); i++){
if(IsPlayerInRangeOfPoint(playerid,2.0,ZonenInfo[i][ctf1X], ZonenInfo[i][ctf1Y], ZonenInfo[i][ctf1Z])){
flagge[playerid] = 1;
SetPlayerAttachedObject(playerid, 3, 19487, 2, 0.101, -0.0, 0.0, 5.50, 84.60, 83.7, 1, 1, 1, 0xFF00FF00);
SendClientMessage(playerid,-1,"Du Nimmst eine Flagge.");
dort = false;
break;
}else{ dort = true;}
}
if(dort) return SendClientMessage(playerid,-1,"Du bist an keinem CTF-Punkt");
return 1;
}
for(new i; i< MAX_ZONE; i++){
GangZoneShowForPlayer(playerid,zone[i],ZonenInfo[i][zcolor]);
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
new i;
for(; i < MAX_ZONE; i++){
if(pickupid == ctfpickup2[i] && flagge[playerid] == 1){
flagge[playerid] = 2;
printf("%d",i);
SendClientMessage(playerid,-1,"Bleibe 20 Sekunden an dem Punkt stehen, sonst wird der Vorgang abgebrochen");
CTFTimer[playerid] = SetTimerEx("ctftimer",1000,true,"ii",playerid,i);
}
}
return 1;
}
forward ctftimer(playerid, id);
public ctftimer(playerid, id){
printf("%d",id);
if(IsPlayerInRangeOfPoint(playerid,4.0,ZonenInfo[id][ctf2X], ZonenInfo[id][ctf2Y], ZonenInfo[id][ctf2Z])){
if(ctftime[playerid] >= 20){
ctftime[playerid] = 0;
flagge[playerid] = 0;
RemovePlayerAttachedObject(playerid, 3);
SendClientMessage(playerid,-1,"Du hast die Flagge erobert.");
KillTimer(CTFTimer[playerid]);
}
ctftime[playerid]++;
}else{
ctftime[playerid] = 0;
flagge[playerid] = 0;
RemovePlayerAttachedObject(playerid, 3);
SendClientMessage(playerid,-1,"Du hast den Punkt verlassen! Vorgang abgebrochen");
KillTimer(CTFTimer[playerid]);
}
return 1;
}
Bilder gibt es natürlich auch dazu. Jedoch mache ich nochmal aufmerksam das diese Codes hier nur schnipsel sind kein copy past darum release ich auch grundsätzlich
nur ungern was beziehungsweise gar nicht
und helfe eher oder poste hier Codeschnipsel.
das nehmen der "Flagge" ich hab einen Hut genommen da ich zu faul war die koordinaten raus zu suchen für die flagge.
Hier der Punkt wo man hin muss und 20 Sekunden warten
und nach dem 20 Sekunden verschwindet natürlich das Objekt und mann könnte zum beispiel bei einem gangfight die punkte dann erhöhen


