PDA

Просмотр полной версии : [Вопрос] Вывод сообщения в чат



Andrik851
02.06.2019, 17:41
Добрый день помогите вставить в файлскрипт строку с выводом сообщения в чат

пример сообщения


SendClientMessage(playerid, COLOR_GREY, "{BEBEBE}[INFO] Вы проголодались! /nВаше здоровье сильно ухудшается /nПосетите столовую! ");


вот сюда его нужно вставить


#include <a_samp>

#define FILTERSCRIPT

forward ShowGolod();

new Text:GolodInfo[MAX_PLAYERS];
new PlayerGolod[MAX_PLAYERS];
new GolodShow[MAX_PLAYERS];
new Float:PlayerHP[MAX_PLAYERS][3];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Golod by Neo@Rus for samp-rus.com");
print("--------------------------------------\n");
SetTimer("ShowGolod", 120000, 1);
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

public OnPlayerSpawn(playerid)
{
PlayerGolod[playerid]=30;
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
if(GolodShow[playerid]==1)
{
GolodShow[playerid]=0;
TextDrawDestroy(GolodInfo[playerid]);

}
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}

public ShowGolod()
{
new string[256];
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GolodShow[i]==1) {
GolodShow[i]=0;
TextDrawHideForPlayer(i, GolodInfo[i]);
TextDrawDestroy(GolodInfo[i]);
}
if(PlayerGolod[i]==0) {
new Float:hp;
GetPlayerHealth(i, hp);
SetPlayerHealth(i, hp-1);
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
} else {
PlayerGolod[i]--;
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
}
string = "~b~888888888888888888888888888888";
strins(string, "~l~", PlayerGolod[i]+3);
GolodShow[i]=1;
} else if(GolodShow[i]==1) {
GolodShow[i]=0;
}
}
return 1;
}

execution
02.06.2019, 22:37
Escape-последовательность нельзя применять в этой функции.


SendClientMessage(playerid, 0xBEBEBEFF, !"[INFO] Вы проголодались!");
SendClientMessage(playerid, 0xBEBEBEFF, !"Ваше здоровье сильно ухудшается");
SendClientMessage(playerid, 0xBEBEBEFF, !"Посетите столовую!");

Andrik851
03.06.2019, 01:07
ну это понятно а куда мне все это вставить

Fallen A.
03.06.2019, 19:31
Давно не открывал павн, но, как мне кажется, здесь придется перехватывать функцию спавна игрока.

execution
03.06.2019, 21:55
ну это понятно а куда мне все это вставить
В какой момент ты хочешь, что бы это писалось?

Andrik851
04.06.2019, 09:46
когда голод будет почти на нуле

execution
04.06.2019, 11:39
когда голод будет почти на нуле

Тут конечно без 100 грамм не разберёшь, попробуй так:



public ShowGolod()
{
new string[256];
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GolodShow[i]==1) {
GolodShow[i]=0;
TextDrawHideForPlayer(i, GolodInfo[i]);
TextDrawDestroy(GolodInfo[i]);
}
if(PlayerGolod[i]==0) {
new Float:hp;
GetPlayerHealth(i, hp);
SetPlayerHealth(i, hp-1);
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
} else {
if(--PlayerGolod[i] == 3)
{
SendClientMessage(playerid, 0xBEBEBEFF, !"[INFO] Вы проголодались!");
SendClientMessage(playerid, 0xBEBEBEFF, !"Ваше здоровье сильно ухудшается");
SendClientMessage(playerid, 0xBEBEBEFF, !"Посетите столовую!");
}
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
}
string = "~b~888888888888888888888888888888";
strins(string, "~l~", PlayerGolod[i]+3);
GolodShow[i]=1;
} else if(GolodShow[i]==1) {
GolodShow[i]=0;
}
}
return 1;
}

Andrik851
04.06.2019, 14:44
Тут конечно без 100 грамм не разберёшь, попробуй так:



public ShowGolod()
{
new string[256];
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GolodShow[i]==1) {
GolodShow[i]=0;
TextDrawHideForPlayer(i, GolodInfo[i]);
TextDrawDestroy(GolodInfo[i]);
}
if(PlayerGolod[i]==0) {
new Float:hp;
GetPlayerHealth(i, hp);
SetPlayerHealth(i, hp-1);
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
} else {
if(--PlayerGolod[i] == 3)
{
SendClientMessage(playerid, 0xBEBEBEFF, !"[INFO] Вы проголодались!");
SendClientMessage(playerid, 0xBEBEBEFF, !"Ваше здоровье сильно ухудшается");
SendClientMessage(playerid, 0xBEBEBEFF, !"Посетите столовую!");
}
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
}
string = "~b~888888888888888888888888888888";
strins(string, "~l~", PlayerGolod[i]+3);
GolodShow[i]=1;
} else if(GolodShow[i]==1) {
GolodShow[i]=0;
}
}
return 1;
}


щас проверим

- - - Добавлено - - -


Тут конечно без 100 грамм не разберёшь, попробуй так:



public ShowGolod()
{
new string[256];
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GolodShow[i]==1) {
GolodShow[i]=0;
TextDrawHideForPlayer(i, GolodInfo[i]);
TextDrawDestroy(GolodInfo[i]);
}
if(PlayerGolod[i]==0) {
new Float:hp;
GetPlayerHealth(i, hp);
SetPlayerHealth(i, hp-1);
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
} else {
if(--PlayerGolod[i] == 3)
{
SendClientMessage(playerid, 0xBEBEBEFF, !"[INFO] Вы проголодались!");
SendClientMessage(playerid, 0xBEBEBEFF, !"Ваше здоровье сильно ухудшается");
SendClientMessage(playerid, 0xBEBEBEFF, !"Посетите столовую!");
}
if(PlayerHP[i][0]==0.0) {
GetPlayerHealth(i, PlayerHP[i][0]);
PlayerHP[i][1]=0.0;
} else if(PlayerHP[i][1]==0.0) {
GetPlayerHealth(i, PlayerHP[i][1]);
PlayerHP[i][2]=0.0;
} else if(PlayerHP[i][2]==0.0) {
GetPlayerHealth(i, PlayerHP[i][2]);
PlayerHP[i][0]=0.0;
}
if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) {
PlayerGolod[i]=30;
PlayerHP[i][0]=0.0;
PlayerHP[i][1]=0.0;
PlayerHP[i][2]=0.0;
}
}
string = "~b~888888888888888888888888888888";
strins(string, "~l~", PlayerGolod[i]+3);
GolodShow[i]=1;
} else if(GolodShow[i]==1) {
GolodShow[i]=0;
}
}
return 1;
}


выдает вот такие ошибки при компилировании


D:\СЕРВЕРА РАБОЧИЕ\локальный сервер\filterscripts\golod.pwn(94) : error 017: undefined symbol "playerid"
D:\СЕРВЕРА РАБОЧИЕ\локальный сервер\filterscripts\golod.pwn(95) : error 017: undefined symbol "playerid"
D:\СЕРВЕРА РАБОЧИЕ\локальный сервер\filterscripts\golod.pwn(96) : error 017: undefined symbol "playerid"
Pawn compiler 3.10.8 Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

Andrik851
04.06.2019, 20:08
а вот еще нашел в моде стандартную систему голода или точнее ее таймер

так здесь тоже сообщение не выводится даже если стоит 0


SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 180)
{
SetPVarInt(i, "SatietyTime", 0);
PlayerInfo[i][pSatiety]--;
if(PlayerInfo[i][pSatiety] <= 0)
{
PlayerInfo[i][pSatiety] = 0;
}
if(PlayerInfo[i][pSatiety] == 1 || PlayerInfo[i][pSatiety] == 15)
{
SendClientMessage(i, COROR_LBLUE,"[INFO] {FFFFFF}Âû ïðîãîëîäàëèñü! Ñõîäèòå â çàêóñî÷íóþ!");
}
}

Andrik851
05.06.2019, 18:35
Спасибо что никто не помог решил сам
тему можно закрывать

DeimoS
05.06.2019, 19:51
Поделись тем, как решил проблему.

Andrik851
06.06.2019, 16:55
Поделись тем, как решил проблему.

нашел у себя в коде стандартную систему голода только не правильно был настроен таймер



SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 180)
{
SetPVarInt(i, "SatietyTime", 0);
PlayerInfo[i][pSatiety]--;
if(PlayerInfo[i][pSatiety] <= 0)
{
PlayerInfo[i][pSatiety] = 0;
}
if(PlayerInfo[i][pSatiety] == 10)

{
SendClientMessage(i, COROR_LBLUE, "[INFO] {FFFF00}Вы проголодались! Посетите столовую или купите чипсы в 24/7. Узнать состояние персонажа: {77DD77}/need");
PlayerPlaySound(i, 40403, 0.0, 0.0, 0.0);
}

}


- - - Добавлено - - -

тему можно закрывать я так думаю