15.09.2010, 23:23
Heh, it's so easy to say, "Create your own gamemod"
I do not know the true mode of 0
I do not know what we all need and how to go
I do not know the true mode of 0
I do not know what we all need and how to go
if( text[0] == '@' )
{
//if first character is '@', do stuff
}
pawn Код:
|
public OnPlayerText(playerid, text[])
{
if(text[0] == '@')
{
new Message[128];
if(sscanf(params, "s[128]", Message))
{
if( PlayerStatistics[playerid][pAdminLevel] >= 1)
{
SendClientMessage( playerid, COLOR_WHITE, "SYNTAX: @ [message]" );
}
}
else
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnectedEx(i))
{
if(PlayerStatistics[i][pAdminLevel] >= 1)
{
new admtext[128], admin_string[128], name[MAX_PLAYER_NAME];
name = GetName(playerid);
if(PlayerStatistics[i][pAdminLevel] == 5) { admtext = "Server Owner"; }
else if(PlayerStatistics[i][pAdminLevel] == 4) { admtext = "Server Developer"; }
else if(PlayerStatistics[i][pAdminLevel] == 3) { admtext = "Lead Admin"; }
else if(PlayerStatistics[i][pAdminLevel] == 2) { admtext = "Game Admin"; }
else if(PlayerStatistics[i][pAdminLevel] == 1) { admtext = "Moderator"; }
format(admin_string, sizeof( admin_string ), "[%s] %s(%d): %s", admtext, name, playerid, Message );
SendAdminMessage(COLOR_LIGHTBLUE, admin_string, 1);
print(admin_string);
}
}
}
}
}
else
{
return 1;
}
return 1;
}
#include <a_samp> new Text:td_fuel[MAX_PLAYERS]; new Text:td_vhealth[MAX_PLAYERS]; new Text:td_vspeed[MAX_PLAYERS]; new Text:td_box[MAX_PLAYERS]; forward timer_update(); forward timer_refuel(playerid); new isrefuelling[MAX_PLAYERS] = 0; new fuel[MAX_VEHICLES]; new Float:max_vhealth[MAX_VEHICLES]; public OnFilterScriptInit() { for(new i=0;i<MAX_VEHICLES;i++) { GetVehicleHealth(i,max_vhealth[i]); //getting max health fuel[i] = 250 + random(150); //setting fuel for vehicles } for(new i=0;i<MAX_PLAYERS;i++) { //setting up all textdraws td_fuel[i] = TextDrawCreate(476,355,"Fuel:"); td_vhealth[i] = TextDrawCreate(478,376,"Health:"); td_vspeed[i] = TextDrawCreate(478,397,"Speed:"); td_box[i] = TextDrawCreate(478.000000,328.000000,"Vehicle Stats: ~n~~n~~n~~n~"); TextDrawUseBox(td_box[i],1); TextDrawBoxColor(td_box[i],0x00000066); TextDrawTextSize(td_box[i],626.000000,21.000000); TextDrawAlignment(td_fuel[i],0); TextDrawAlignment(td_vhealth[i],0); TextDrawAlignment(td_vspeed[i],0); TextDrawAlignment(td_box[i],0); TextDrawBackgroundColor(td_fuel[i],0x000000ff); TextDrawBackgroundColor(td_vhealth[i],0x000000ff); TextDrawBackgroundColor(td_vspeed[i],0x000000ff); TextDrawBackgroundColor(td_box[i],0x000000cc); TextDrawFont(td_fuel[i],1); TextDrawLetterSize(td_fuel[i],0.699999,2.699999); TextDrawFont(td_vhealth[i],1); TextDrawLetterSize(td_vhealth[i],0.699999,2.699999); TextDrawFont(td_vspeed[i],1); TextDrawLetterSize(td_vspeed[i],0.699999,2.699999); TextDrawFont(td_box[i],0); TextDrawLetterSize(td_box[i],0.699999,2.899999); TextDrawColor(td_fuel[i],0xffffffff); TextDrawColor(td_vhealth[i],0xffffffff); TextDrawColor(td_vspeed[i],0xffffffff); TextDrawColor(td_box[i],0xffffffff); TextDrawSetOutline(td_fuel[i],1); TextDrawSetOutline(td_vhealth[i],1); TextDrawSetOutline(td_vspeed[i],1); TextDrawSetOutline(td_box[i],1); TextDrawSetProportional(td_fuel[i],1); TextDrawSetProportional(td_vhealth[i],1); TextDrawSetProportional(td_vspeed[i],1); TextDrawSetProportional(td_box[i],1); TextDrawSetShadow(td_fuel[i],1); TextDrawSetShadow(td_vhealth[i],1); TextDrawSetShadow(td_vspeed[i],1); TextDrawSetShadow(td_box[i],10); } SetTimer("timer_update",1000,true); return 1; } public OnFilterScriptExit() { for(new i=0;i<MAX_PLAYERS;i++) { TextDrawDestroy(td_fuel[i]); TextDrawDestroy(td_vhealth[i]); TextDrawDestroy(td_vspeed[i]); TextDrawDestroy(td_box[i]); } return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) { TextDrawSetString(td_fuel[playerid],"Fuel:"); TextDrawSetString(td_vhealth[playerid],"Health:"); TextDrawSetString(td_vspeed[playerid],"Speed:"); TextDrawShowForPlayer(playerid,td_fuel[playerid]); TextDrawShowForPlayer(playerid,td_vspeed[playerid]); TextDrawShowForPlayer(playerid,td_vhealth[playerid]); TextDrawShowForPlayer(playerid,td_box[playerid]); } else { TextDrawHideForPlayer(playerid,td_fuel[playerid]); TextDrawHideForPlayer(playerid,td_vspeed[playerid]); TextDrawHideForPlayer(playerid,td_vhealth[playerid]); TextDrawHideForPlayer(playerid,td_box[playerid]); } return 1; } public OnPlayerCommandText(playerid,cmdtext[]) { if (!strcmp("/refuel",cmdtext,true,7)) { if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"You are not in an vehicle!"); //if a player isnt in a vehicle, it stops here if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,"You are already refuelling!"); //if a player is already refuelling, it stops here if (GetPlayerMoney(playerid) - 80 <0) return SendClientMessage(playerid,0xFFC800FF,"You dont have enough money!"); //if a player doesnt have $80 anymore, it stops here GivePlayerMoney(playerid,-80); //Sets the player's cash -$80 SetCameraBehindPlayer(playerid); //Sets the camera behind the player (looks better because the player will be frozen for a few secs) TogglePlayerControllable(playerid,0); //freezes the player so he cant drive and refuel at the same time isrefuelling[playerid] = 1; //setting isrefuelling to 1 so the player cant spam /refuel TextDrawSetString(td_fuel[playerid],"Refuelling..."); //changing textdraw to /refuel SetTimerEx("timer_refuel",4500,false,"i",playerid) ; //setting refueltimer return 1; } return 0; } public timer_update() { for(new i=0;i<MAX_PLAYERS;i++) { if (isrefuelling[i]) return 0; new vid = GetPlayerVehicleID(i); if (GetPlayerVehicleSeat(i) == 0) { fuel[vid] = fuel[vid] - 2; if (fuel[vid]<1) { fuel[vid] = 0; RemovePlayerFromVehicle(i); GameTextForPlayer(i,"~r~You are out of ~w~fuel~r~!",5000,4); } } new string[128];format(string,sizeof string,"Fuel: %i",fuel[vid] /4); TextDrawSetString(td_fuel[i],string); new Float ![]() ![]() ![]() GetVehicleVelocity(vid,speed_x,speed_y,speed_z); temp_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+ (speed_z*speed_z))*136.666667; final_speed = floatround(temp_speed,floatround_round); format(string,sizeof string,"Speed: %i",final_speed); TextDrawSetString(td_vspeed[i],string); GetVehicleHealth(vid,health); if (max_vhealth[vid] == 0)//if its an random spawned vehicle { fuel[vid] = 400; GetVehicleHealth(vid,max_vhealth[vid]); } health = (((health - max_vhealth[vid]) /max_vhealth[vid]) *100)+ 100; format(string,sizeof string,"Health: %i",floatround(health,floatround_round)); TextDrawSetString(td_vhealth[i],string); } return 1; } public timer_refuel(playerid) { new vid = GetPlayerVehicleID(playerid); fuel[vid] = fuel[vid] = 400; isrefuelling[playerid] = 0; TextDrawSetString(td_fuel[playerid],"Fuel:100"); TogglePlayerControllable(playerid,1); } |
Next person to re-create GF should get banned from forums && Slapped with a trout D: |
RealCop228/Nick, the params parameter in the sscanf is the string you are splitting for the variables, so in this case it would be 'text' which is the string that the player entered.
|
public OnPlayerText(playerid, text[])
{
if(text[0] == '@')
{
new Message[128];
if(sscanf(text, "s[128]", Message))
{
if( PlayerStatistics[playerid][pAdminLevel] >= 1)
{
SendClientMessage( playerid, COLOR_WHITE, "SYNTAX: @ [message]" );
}
}
else
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnectedEx(i))
{
if(PlayerStatistics[i][pAdminLevel] >= 1)
{
new admtext[128], admin_string[128], name[MAX_PLAYER_NAME];
name = GetName(playerid);
if(PlayerStatistics[i][pAdminLevel] == 5) { admtext = "Server Owner"; }
else if(PlayerStatistics[i][pAdminLevel] == 4) { admtext = "Server Developer"; }
else if(PlayerStatistics[i][pAdminLevel] == 3) { admtext = "Lead Admin"; }
else if(PlayerStatistics[i][pAdminLevel] == 2) { admtext = "Game Admin"; }
else if(PlayerStatistics[i][pAdminLevel] == 1) { admtext = "Moderator"; }
format(admin_string, sizeof( admin_string ), "[%s] %s(%d): %s", admtext, name, playerid, Message );
SendAdminMessage(COLOR_LIGHTBLUE, admin_string, 1);
print(admin_string);
}
}
}
}
}
else
{
return 1;
}
return 1;
}
Thanks again, Southclaw. This is what I currently have.
pawn Код:
|
You must return '0' in order for the text not to be send (Via standard build-in chat), so you'd be most likely want to do it just after "print(admin_string);"
|
public OnPlayerText(playerid, text[])
{
if(text[0] == '@')
{
new Message[128];
if(sscanf(text, "s[128]", Message))
{
if(PlayerStatistics[playerid][pAdminLevel] >= 1)
{
SendClientMessage(playerid, COLOR_WHITE, "SYNTAX: /(a)dmin [message]");
}
}
else
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnectedEx(i))
{
if(PlayerStatistics[i][pAdminLevel] >= 1)
{
new admtext[128], name[MAX_PLAYER_NAME], string[128];
name = GetName(playerid);
if(PlayerStatistics[i][pAdminLevel] == 5) { admtext = "Server Owner"; }
else if(PlayerStatistics[i][pAdminLevel] == 4) { admtext = "Server Developer"; }
else if(PlayerStatistics[i][pAdminLevel] == 3) { admtext = "Lead Admin"; }
else if(PlayerStatistics[i][pAdminLevel] == 2) { admtext = "Game Admin"; }
else if(PlayerStatistics[i][pAdminLevel] == 1) { admtext = "Moderator"; }
format(string, sizeof(string), "[%s] %s(%d): %s", admtext, name, playerid, Message );
SendAdminMessage(COLOR_LIGHTBLUE, string, 1);
print(string);
return 0;
}
}
}
}
}
else
{
return 1;
}
return 1;
}
@stix that already exists I believe, check the search look for 'Clock filterscript' or something similar
@Realcop erm I'm not sure about that, you might be able to remove that with strdel I was thinking you can put in the format 'message[1]' but that will only insert the second character, not all the text from the second character, I think that anyway. Try the strdel method anyway, will be message then start 0 end 1 I think :P |