PDA

Просмотр полной версии : [Вопрос] gettime



Sp1ke
19.07.2015, 01:28
Немного погуглив ничего путного не нашел, надеюсь вы объясните, функцию использую очень редко и по этому не понимаю в чем причина.

new h, m, s;
gettime(h, m, s);
if(m == 0 && s == 0)
{
код
}
Ошибка:
New\gamemodes\new.pwn(542) : error 001: expected token: ";", but found "if"
При этом использую функцию в паблике рестарта и никаких ошибок нету, нет слов :D

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

Строка с ошибкой
if(m == 0 && s == 0)

Daniel_Cortez
19.07.2015, 01:52
Кроме багов компилятора (коих в pawncc дофига) больше ничего в голову не приходит.
Проверяли ошибку на версии компилятора с багфиксами от Zeex?

https://github.com/Zeex/pawn

P.S.: Последний релиз можно скачать здесь:

https://github.com/Zeex/pawn/releases

P.S.S.: Ещё есть русифицированная версия компилятора, которая базируется на версии от Zeex. Лучше не пользуйтесь ей - скорее всего, это будет пустая трата времени, т.к. та версия компилятора давно не обновлялась.

Sp1ke
19.07.2015, 02:33
Кроме багов компилятора (коих в pawncc дофига) больше ничего в голову не приходит.
Проверяли ошибку на версии компилятора с багфиксами от Zeex?

https://github.com/Zeex/pawn

Не помогло, ошибка осталась.

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

От русской версии компилятора ошибка осталась, от пред. версии релиза тоже, а вот от самой последней проблема решилась, но теперь чувствую будет реагировать на все инклуды
E:\New\pawno\include\sscanf2.inc(30) : fatal error 111: user error: Please include <a_npc> or <a_samp> first.

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

Прошу заметить, что все инклуды подключены правильно, а именно в таком порядке.
#include <a_samp>
#include <a_mysql>
#include <dc_cmd>
#include <zl_dlg>
#include <sscanf2>
#include <streamer>
#include <jit>
#include <mxdate>
#include <dc_spp>
#include <foreach>
#include <forveh>
#include <objects>

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

Решение: убрать из инклуда sscanf строку
#error Please include <a_npc> or <a_samp> first.
А потом скомпилировал мод, и что же у нас тут?

E:\New\gamemodes\new.pwn(542) : error 001: expected token: ";", but found "if"
Pawn compiler 3.10.20150531 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Если кто-то встречался с таким то прошу помочь.

$continue$
19.07.2015, 02:46
Покажите полностью код. И не надо в условий писать "Остальной код".
Если боитесь его показать - то, тогда зачем просить помощь?

Sp1ke
19.07.2015, 02:51
Покажите полностью код. И не надо в условий писать "Остальной код".
Если боитесь его показать - то, тогда зачем просить помощь?

Да пожалуйста, ничего такого в коде нету, чтобы его скрывать, просто хотел как можно короче.

publics PlayerUpdate(playerid)
{
new h, m, s;
gettime(h, m, s);
SetPlayerMoney(playerid, Player[playerid][Cash])
if(m == 0 && s == 0)
{
SetWorldTime(h);
PayDay();
}
if(Player[playerid][Mute] != 0) Player[playerid][Mute] -= 1;
if(Player[playerid][Mute] == 1) SCM(playerid, COLOR_WHITE, "Áàí ÷àòà ñíÿò! Ïîæàëóéñòà, áîëüøå íå íàðóøàéòå ïðàâèëà ñåðâåðà!");
return true;
}

Daniel_Cortez
19.07.2015, 03:10
Покажите объявление макроса publics (чьей вообще идеей были назвать макрос для объявления public-функций именем "паблики"? -_-)

Sp1ke
19.07.2015, 03:14
Покажите объявление макроса publics (чьей вообще идеей были назвать макрос для объявления public-функций именем "паблики"? -_-)

Просто так удобней, называть как-то по-другому смысла - нет, а приписать одну букву вместе форвардов удобно.
#define publics%0(%1) forward%0(%1); public%0(%1)

$continue$
19.07.2015, 03:27
кек.
SetPlayerMoney(playerid, Player[playerid][Cash]) ?????


SetPlayerMoney(playerid, Player[playerid][Cash]);

Sp1ke
19.07.2015, 03:28
кек.
SetPlayerMoney(playerid, Player[playerid][Cash]) ?????


SetPlayerMoney(playerid, Player[playerid][Cash]);


Ну и? Собственная функция для изменения кол-ва денег, что такого-то?

$continue$
19.07.2015, 03:29
Вы реально не видите что после закрытие ), пропущено ;
Вот вообщем готовый код: (-_-)


forward PlayerUpdate(playerid);
public PlayerUpdate(playerid)
{
new h, m, s;
gettime(h, m, s);
SetPlayerMoney(playerid, Player[playerid][Cash]);
if (m == 0 && s == 0)
{
SetWorldTime(h);
PayDay();
}
if (Player[playerid][Mute] != 0) Player[playerid][Mute] -= 1;
if (Player[playerid][Mute] == 1) SCM(playerid, COLOR_WHITE, "Áàí ÷àòà ñíÿò! Ïîæàëóéñòà, áîëüøå íå íàðóøàéòå ïðàâèëà ñåðâåðà!");
return true;
}

Sp1ke
19.07.2015, 03:30
Вы реально не видите что после закрытие ), пропущено ;

Лол, за 3 часа пока перерыл весь код не заметил :D Решено!

Daniel_Cortez
19.07.2015, 20:32
называть как-то по-другому смысла - нет
Уже давно существует макрос fpub ("forwarded public"):

#define fpub%0(%1) forward%0(%1);public%0(%1)
Уже не помню, где впервые видел этот макрос, на sa-mp.com наверное. Во всяком случае, в его названии хотя бы есть смысл.


Лол, за 3 часа пока перерыл весь код не заметил :D Решено!

#pragma semicolon 0
После такого ";" в конце каждого предложения вообще не нужны будут =)

Ок, перемещу тему в архив вопросов, а заодно и переименую её, чтобы лучше отразить суть проблемы.