コード例 #1
0
ファイル: item.cpp プロジェクト: ronniwe/Varios
bool CItem::AddToGround(long lMapIndex, const PIXEL_POSITION & pos, bool skipOwnerCheck)
{
	if (0 == lMapIndex)
	{
		sys_err("wrong map index argument: %d", lMapIndex);
		return false;
	}

	if (GetSectree())
	{
		sys_err("sectree already assigned");
		return false;
	}

	if (!skipOwnerCheck && m_pOwner)
	{
		sys_err("owner pointer not null");
		return false;
	}

	LPSECTREE tree = SECTREE_MANAGER::instance().Get(lMapIndex, pos.x, pos.y);

	if (!tree)
	{
		sys_err("cannot find sectree by %dx%d", pos.x, pos.y);
		return false;
	}

	//tree->Touch();

	SetWindow(GROUND);
	SetXYZ(pos.x, pos.y, pos.z);
	tree->InsertEntity(this);
	UpdateSectree();
	Save();
	return true;
}
コード例 #2
0
ファイル: war_map.cpp プロジェクト: adi97ida/Server
void CWarMap::OnKill(LPCHARACTER killer, LPCHARACTER ch)
{
	if (m_bEnded)
		return;

	DWORD dwKillerGuild = 0;
	DWORD dwDeadGuild = 0;

	if (killer->GetGuild())
		dwKillerGuild = killer->GetGuild()->GetID();

	if (ch->GetGuild())
		dwDeadGuild = ch->GetGuild()->GetID();

	BYTE idx;

	sys_log(0, "WarMap::OnKill %u %u", dwKillerGuild, dwDeadGuild);

	if (!GetTeamIndex(dwKillerGuild, idx))
		return;

	if (!GetTeamIndex(dwDeadGuild, idx))
		return;

	switch (m_kMapInfo.bType)
	{
		case WAR_MAP_TYPE_NORMAL:
			SendGuildWarScore(dwKillerGuild, dwDeadGuild, 1, ch->GetLevel());
			break;

		case WAR_MAP_TYPE_FLAG:
			{
				CAffect * pkAff = ch->FindAffect(AFFECT_WAR_FLAG);

				if (pkAff)
				{
					if (GetTeamIndex(pkAff->lApplyValue, idx))
						AddFlag(idx, ch->GetX(), ch->GetY());

					ch->RemoveAffect(AFFECT_WAR_FLAG);
				}
			}
			break;

		default:
			sys_err("unknown war map type %u index %d", m_kMapInfo.bType, m_kMapInfo.lMapIndex);
			break;
	}
}
コード例 #3
0
ファイル: lancian.c プロジェクト: micmn/so-esami-lab
int main(int argc, char *argv[]) {
    int i, status;
    unsigned int n;
    char *cmd;
    char **args;
    char *envp[2];
    int n_args = argc-2;
    char ncopia[17];
    int **fds;
    char buffer[1024];
    size_t len;

    if (argc < 3)
        err("usage: lancian n cmd arg1 arg2 ...");

    envp[0] = (char *)ncopia;
    envp[1] = NULL;

    n = atoi(argv[1]);
    args = malloc((n_args+1)*sizeof(char *));
    cmd = args[0] = argv[2];
    args[n_args] = NULL;
    for (i = 1; i < n_args; ++i)
        args[i] = argv[i+2];

    fds = malloc(n*sizeof(int *));
    for (i = 0; i < n; ++i) {
        fds[i] = malloc(2*sizeof(int));
        pipe(fds[i]);
        if (fork() == 0) {
            close(fds[i][0]);
            dup2(fds[i][1], 1);
            close(fds[i][1]);

            sprintf(ncopia, "NCOPIA=%d", i);
            if (execvpe(cmd, args, envp) == -1)
                sys_err("execvpe");
        }
    }

    for (i = 0; i < n; ++i) {
        close(fds[i][1]);
        while ((len = read(fds[i][0], buffer, sizeof(buffer))) != 0)
            write(1, buffer, len);
    }

    printf("lancian: fine\n");
    exit(0);
}
コード例 #4
0
ファイル: desc_manager.cpp プロジェクト: ronniwe/Varios
LPDESC DESC_MANAGER::AcceptDesc(LPFDWATCH fdw, socket_t s)
{
	socket_t                    desc;
	LPDESC						newd;
	static struct sockaddr_in   peer;
	static char					host[MAX_HOST_LENGTH + 1];

	if ((desc = socket_accept(s, &peer)) == -1)
		return NULL;

	strlcpy(host, inet_ntoa(peer.sin_addr), sizeof(host));

	if (g_bAuthServer)
	{
		if (IsBanIP(peer.sin_addr))
		{
			sys_log(0, "connection from %s was banned.", host);
			socket_close(desc);
			return NULL;
		}
	}

	if (!IsValidIP(admin_ip, host)) // admin_ip 에 등록된 IP 는 최대 사용자 수에 구애받지 않는다.
	{
		if (m_iSocketsConnected >= MAX_ALLOW_USER)
		{
			sys_err("max connection reached. MAX_ALLOW_USER = %d", MAX_ALLOW_USER);
			socket_close(desc);
			return NULL;
		}
	}

	newd = M2_NEW DESC;
	crc_t handshake = CreateHandshake();

	if (!newd->Setup(fdw, desc, peer, ++m_iHandleCount, handshake))
	{
		socket_close(desc);
		M2_DELETE(newd);
		return NULL;
	}

	m_map_handshake.insert(DESC_HANDSHAKE_MAP::value_type(handshake, newd));
	m_map_handle.insert(DESC_HANDLE_MAP::value_type(newd->GetHandle(), newd));

	m_set_pkDesc.insert(newd);
	++m_iSocketsConnected;
	return (newd);
}
コード例 #5
0
ファイル: PeerBase.cpp プロジェクト: adi97ida/Server
int CPeerBase::Recv()
{
	if (!m_inBuffer)
	{
		sys_err("input buffer nil");
		return -1;
	}

	buffer_adjust_size(m_inBuffer, MAX_INPUT_LEN >> 2);
	int bytes_to_read = buffer_has_space(m_inBuffer);
	ssize_t bytes_read = socket_read(m_fd, (char *) buffer_write_peek(m_inBuffer), bytes_to_read);

	if (bytes_read < 0)
	{
		sys_err("socket_read failed %s", strerror(errno));
		return -1;
	}
	else if (bytes_read == 0)
		return 0;

	buffer_write_proceed(m_inBuffer, bytes_read);
	m_BytesRemain = buffer_size(m_inBuffer);
	return 1;
}
コード例 #6
0
ファイル: chmod.c プロジェクト: yzmin/LinuxCode
int main(int argc,char *argv[])
{
    if(argc < 2)
    {
        printf("./a.out filename\n");
        exit(-1);
    }

    if(chmod(argv[1],0777)!= 0)
    {
        sys_err("chmod");
    }

    return 0;
}
コード例 #7
0
ファイル: lua_setKeyCallback.c プロジェクト: mmmmhack/vblend
static void keyCallback(int key, int action) {
	// TODO: add reentrant guard?
	if(!strlen(lua_keyCallbackFuncName)) 
		return;
	lua_getglobal(LL, lua_keyCallbackFuncName);
	lua_pushnumber(LL, key);
	lua_pushnumber(LL, action);
	int rc = lua_pcall(LL, 2, 0, 0);
	if(rc) {
		const char* err = lua_tostring(LL, -1);
		fprintf(stderr, "failed calling lua keydown handler: %s\n", err);
		sys_err("keyCallback");
	}
//	lua_pop(LL, 1);
}
コード例 #8
0
ファイル: process.c プロジェクト: alexsvn/acctl
/*
 * reponse_brd recv broadcast msg from ac and update sysstat
 * */
static void proc_brd(struct msg_ac_brd_t *msg, int len, int proto)
{
	assert(proto == MSG_PROTO_ETH);

	sys_debug("receive ac broadcast packet\n");
	if(len < sizeof(*msg)) {
		sys_err("receive error msg ac broadcast packet\n");
		return;
	}

	if(sysstat.isreg)
		_proc_brd_isreg(msg, len, proto);
	else
		_proc_brd(msg, len, proto);
}
コード例 #9
0
ファイル: socket.c プロジェクト: cCorax2/Source_code
socket_t socket_accept(socket_t s, struct sockaddr_in *peer)
{
    socket_t desc;
    socklen_t i;

    i = sizeof(*peer);

    if ((desc = accept(s, (struct sockaddr *) peer, &i)) == -1)
    {
	sys_err("accept: %s (fd %d)", strerror(errno), s);
	return -1;
    }

    if (desc >= 65500)
    {
	sys_err("SOCKET FD 65500 LIMIT! %d", desc);
	socket_close(s);
	return -1;
    }

    socket_nonblock(desc);
    socket_lingeroff(desc);
    return (desc);
}
コード例 #10
0
ファイル: test_window.cpp プロジェクト: cCorax2/Source_code
int start(int argc, char ** argv)
{
	//extern const char * _malloc_options;
	//_malloc_options = "A";

	if (lzo_init() != LZO_E_OK)
	{
		sys_err("lzo_init() failed");
		return 0;
	}

	thecore_init(25, heartbeat);
	signal_timer_disable();
	return 1;
}
コード例 #11
0
	int marriage_get_married_time(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		marriage::TMarriage* pMarriage = marriage::CManager::instance().Get(ch->GetPlayerID());

		if (!pMarriage)
		{
			sys_err("trying to get time for not married character");
			lua_pushnumber(L, 0);
			return 1;
		}

		lua_pushnumber(L, get_global_time() - pMarriage->marry_time);
		return 1;
	}
コード例 #12
0
ファイル: ggsn.c プロジェクト: Dosxiong/my_house_git
/* Used to write process ID to file. Assume someone else will delete */
void log_pid(char *pidfile) {
  FILE *file;
  mode_t oldmask;
  
  oldmask = umask(022);
  file = fopen(pidfile, "w");
  umask(oldmask);
  if(!file) {
    sys_err(LOG_ERR, __FILE__, __LINE__, 0,
	    "Failed to create process ID file: %s!", pidfile);
    return;
  }
  fprintf(file, "%d\n", (int) getpid());
  fclose(file);
}
コード例 #13
0
	int marriage_end_wedding(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		marriage::TMarriage* pMarriage = marriage::CManager::instance().Get(ch->GetPlayerID());
		if (!pMarriage)
		{
			sys_err("pid[%d:%s] is not exist couple", ch->GetPlayerID(), ch->GetName());
			return 0;
		}
		if (pMarriage->pWeddingInfo)
		{
			// 결혼식 끝내기 요청
			pMarriage->RequestEndWedding();
		}
		return 0;
	}
コード例 #14
0
ファイル: party.cpp プロジェクト: Rarder44/Server
void CParty::P2PQuit(DWORD dwPID)
{
	TMemberMap::iterator it = m_memberMap.find(dwPID);

	if (it == m_memberMap.end())
		return;

	if (m_bPCParty)
		SendPartyRemoveOneToAll(dwPID);

	if (it == m_itNextOwner)
		IncreaseOwnership();

	if (m_bPCParty)
		RemoveBonusForOne(dwPID);

	LPCHARACTER ch = it->second.pCharacter;
	BYTE bRole = it->second.bRole;

	m_memberMap.erase(it);

	sys_log(2, "PARTY[%d] MemberCountChange %d -> %d", GetLeaderPID(), GetMemberCount(), GetMemberCount() - 1);

	if (bRole < PARTY_ROLE_MAX_NUM)
	{
		--m_anRoleCount[bRole];
	}
	else
	{
		sys_err("ROLE_COUNT_QUIT_ERROR: INDEX(%d) > MAX(%d)", bRole, PARTY_ROLE_MAX_NUM);
	}

	if (ch)
	{
		ch->SetParty(NULL);
		ComputeRolePoint(ch, bRole, false);
	}

	if (m_bPCParty)
		CPartyManager::instance().SetPartyMember(dwPID, NULL);

	// ё®ґх°Ў іЄ°Ўёй ЖДЖјґВ ЗШ»кµЗѕоѕЯ ЗСґЩ.
	if (bRole == PARTY_ROLE_LEADER)
		CPartyManager::instance().DeleteParty(this);

	// АМ ѕЖ·ЎґВ ДЪµеё¦ ГЯ°ЎЗПБц ё» °Н!!! А§ DeleteParty ЗПёй thisґВ ѕшґЩ.
}
コード例 #15
0
ファイル: tfont.c プロジェクト: mmmmhack/vblend
static void init_texture() {

    // create tex id
    glGenTextures(1, &_tex_id);
    if(_tex_id == 0)
        sys_err("glGenTextures() failed");

    // define texture state for this tex object
    glBindTexture(GL_TEXTURE_2D, _tex_id);

    // define texture parameters
    /*
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
                       GL_NEAREST);
    */
    // only this one appears to be mandatory
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
                    GL_NEAREST);

    // create texture
    GLenum target = GL_TEXTURE_2D;
    GLint level = 0;
    GLint internalFormat = GL_RGBA8;
    GLsizei width = _img->width;
    GLsizei height = _img->height;
    GLint border = 0;
    GLenum format = GL_RGBA;
    GLenum type = GL_UNSIGNED_BYTE;
    const GLvoid* pixels = _img->pixels;
    glTexImage2D(
        target,
        level,
        internalFormat,
        width,
        height,
        border,
        format,
        type,
        pixels
    );
    glEnable(GL_TEXTURE_2D);

    // do we need this? I think so
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
コード例 #16
0
ファイル: party.cpp プロジェクト: cCorax2/Source_code
void CParty::P2PQuit(DWORD dwPID)
{
	TMemberMap::iterator it = m_memberMap.find(dwPID);

	if (it == m_memberMap.end())
		return;

	if (m_bPCParty)
		SendPartyRemoveOneToAll(dwPID);

	if (it == m_itNextOwner)
		IncreaseOwnership();

	if (m_bPCParty)
		RemoveBonusForOne(dwPID);

	LPCHARACTER ch = it->second.pCharacter;
	BYTE bRole = it->second.bRole;

	m_memberMap.erase(it);

	sys_log(2, "PARTY[%d] MemberCountChange %d -> %d", GetLeaderPID(), GetMemberCount(), GetMemberCount() - 1);

	if (bRole < PARTY_ROLE_MAX_NUM)
	{
		--m_anRoleCount[bRole];
	}
	else
	{
		sys_err("ROLE_COUNT_QUIT_ERROR: INDEX(%d) > MAX(%d)", bRole, PARTY_ROLE_MAX_NUM);
	}

	if (ch)
	{
		ch->SetParty(NULL);
		ComputeRolePoint(ch, bRole, false);
	}

	if (m_bPCParty)
		CPartyManager::instance().SetPartyMember(dwPID, NULL);

	// 리더가 나가면 파티는 해산되어야 한다.
	if (bRole == PARTY_ROLE_LEADER)
		CPartyManager::instance().DeleteParty(this);

	// 이 아래는 코드를 추가하지 말 것!!! 위 DeleteParty 하면 this는 없다.
}
コード例 #17
0
ファイル: horsename_manager.cpp プロジェクト: adi97ida/Server
void CHorseNameManager::UpdateHorseName(DWORD dwPlayerID, const char* szHorseName, bool broadcast)
{
	if ( szHorseName == NULL )
	{
		sys_err("HORSE_NAME: NULL NAME (%u)", dwPlayerID);
		szHorseName = "";
	}

	sys_log(0, "HORSENAME: update %u %s", dwPlayerID, szHorseName);

	m_mapHorseNames[dwPlayerID] = szHorseName;

	if ( broadcast == true )
	{
		BroadcastHorseName(dwPlayerID, szHorseName);
	}
}
コード例 #18
0
ファイル: tfont.c プロジェクト: mmmmhack/vblend
void tfont_draw_text_buf() {
    if(!tfont_init())
        sys_err("tfont not initialized");
    // TODO: change to push/pop gl attribs as needed

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _tex_id);

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);

    glVertexPointer(2, GL_FLOAT, 0, _verts);
    glTexCoordPointer(2, GL_FLOAT, 0, _tcoords);
    glDrawElements(GL_TRIANGLES, _num_tris * 3, GL_UNSIGNED_INT, _tris);

    glDisable(GL_TEXTURE_2D);
}
コード例 #19
0
ファイル: truncate.c プロジェクト: yzmin/LinuxCode
int main(int argc, char *argv[])
{
    if(argc < 3)
    {
        printf("./a.out filename size\n");
        exit(-1);
    }
    int size = atoi(argv[2]);

    if(access(argv[1],F_OK) != 0)
        creat(argv[1],0664);

    if(truncate(argv[1],size) < 0)
        sys_err("truncate");

    return 0;
}
コード例 #20
0
ファイル: fdwatch.c プロジェクト: cCorax2/Source_code
int fdwatch(LPFDWATCH fdw, struct timeval *timeout)
{
    int	i, r;
    struct timespec ts;

    if (fdw->nkqevents)
	sys_log(2, "fdwatch: nkqevents %d", fdw->nkqevents);

    if (!timeout)
    {
	ts.tv_sec = 0;
	ts.tv_nsec = 0;

	r = kevent(fdw->kq, fdw->kqevents, fdw->nkqevents, fdw->kqrevents, fdw->nfiles, &ts);
    }
    else
    {
	ts.tv_sec = timeout->tv_sec;
	ts.tv_nsec = timeout->tv_usec;

	r = kevent(fdw->kq, fdw->kqevents, fdw->nkqevents, fdw->kqrevents, fdw->nfiles, &ts);
    }

    fdw->nkqevents = 0;

    if (r == -1)
	return -1;

    memset(fdw->fd_event_idx, 0, sizeof(int) * fdw->nfiles);

    for (i = 0; i < r; i++)
    {
	int fd = fdw->kqrevents[i].ident;

	if (fd >= fdw->nfiles)
	    sys_err("ident overflow %d nfiles: %d", fdw->kqrevents[i].ident, fdw->nfiles);
	else
	{
	    if (fdw->kqrevents[i].filter == EVFILT_WRITE)
		fdw->fd_event_idx[fd] = i;
	}
    }

    return (r);
}
コード例 #21
0
void interaction::traceIpHost(const char* ipHost) {
    //-----------------------
    // check if we over limit
    //-----------------------
    if(rLimitor->isOverLimit()) {
        // notify user
        dprintf(connfd, "*********************************************\n");
        dprintf(connfd, "Making too many requests than you can\n");
        dprintf(connfd, "%s\n",rLimitor->currentLimit());
        dprintf(connfd, "*********************************************\n");
        // log it
        extern eventsLog servLog;
        servLog.logIt("User from IP: %s (with pid %d)"
                " making too many requests\n", userIp(*clientAddr), getpid());
        return;
    }
    //---------------------------------------------
    // check if ip hinted by ipHost is valid or not
    //---------------------------------------------
    if(strict) {
        if(!isValidIp(ipHost)) {
            return;
        }
    }
    pid_t child_pid;
    if((child_pid=fork())<0) {
        sys_err("call to fork() failed");
    } else if(child_pid==0) { // in child
        // Close stuff from parents
        // redirect stderr and stdout to connfd
        Dup2(connfd, STDOUT_FILENO);
        Dup2(connfd, STDERR_FILENO);
        cout<<"------------------------------------------"
            <<"----------------------------------"<<endl;
        // call execlp 'NULL' must be provided
        execlp("traceroute","traceroute",ipHost, NULL);
    } else {// in parent
        if(VOMIT) {
            cout<<"client interaction process: "<<getpid()
                <<" forked a child with pid: "<<child_pid<<endl;
        }
        // block until child finish
        waitpid(child_pid, NULL, 0);
    }
}
コード例 #22
0
ファイル: party.cpp プロジェクト: cCorax2/Source_code
void CPartyManager::P2PJoinParty(DWORD leader, DWORD pid, BYTE role)
{
	TPartyMap::iterator it = m_map_pkParty.find(leader);

	if (it != m_map_pkParty.end())
	{
		it->second->P2PJoin(pid);

		if (role >= PARTY_ROLE_MAX_NUM)
			role = PARTY_ROLE_NORMAL;

		it->second->SetRole(pid, role, true);
	}
	else
	{
		sys_err("No such party with leader [%d]", leader);
	}
}
コード例 #23
0
ファイル: socket.c プロジェクト: cCorax2/Source_code
void socket_lingeron(socket_t s)
{
#ifdef __WIN32__
    int linger;
    linger = 0;
#else
    struct linger linger;

    linger.l_onoff	= 1;
    linger.l_linger	= 0;
#endif
    if (setsockopt(s, SOL_SOCKET, SO_LINGER, (const char*) &linger, sizeof(linger)) < 0)
    {
	sys_err("setsockopt: linger: %s", strerror(errno));
	socket_close(s);
	return;
    }
}
コード例 #24
0
ファイル: war_map.cpp プロジェクト: adi97ida/Server
long CWarMapManager::CreateWarMap(const TGuildWarInfo& guildWarInfo, DWORD dwGuildID1, DWORD dwGuildID2)
{
	TWarMapInfo * pkInfo = GetWarMapInfo(guildWarInfo.lMapIndex);
	if (!pkInfo)
	{
		sys_err("GuildWar.CreateWarMap.NOT_FOUND_MAPINFO[%d]", guildWarInfo.lMapIndex);
		return 0;
	}

	DWORD lMapIndex = SECTREE_MANAGER::instance().CreatePrivateMap(guildWarInfo.lMapIndex);

	if (lMapIndex)
	{
		m_mapWarMap.insert(std::make_pair(lMapIndex, M2_NEW CWarMap(lMapIndex, guildWarInfo, pkInfo, dwGuildID1, dwGuildID2)));
	}

	return lMapIndex;
}
コード例 #25
0
ファイル: dllayer.c プロジェクト: alexsvn/acctl
static void __init_rcv(int *sock)
{
	int ret;

	pthread_mutex_init(&dllrcv.lock, NULL);
	dllrcv.rcvsock = __create_sock(0);
	if(sock)
		*sock = dllrcv.rcvsock;

	__build_rcvll(1);
	ret = bind(dllrcv.rcvsock, (struct sockaddr *)&dllrcv.ll, 
		dllrcv.recvlen);
	if(ret < 0) {
		sys_err("Bind recive socket failed: %s\n", 
			strerror(errno));
		exit(-1);
	}
}
コード例 #26
0
ファイル: tf_edit.c プロジェクト: mmmmhack/vblend
static void tick() {
//	printf("BEG tick()\n");
	lu_checkstack(L);

	lua_pushcfunction(L, tf_traceback);
	lua_getglobal(L, "tick");
	int rc = lua_pcall(L, 0, 0, 1);
	if(rc) {
		const char* err = lua_tostring(L, -1);
		fprintf(stderr, "failed calling lua tick handler: %s\n", err);
//		lua_traceback();
		sys_err("tick()");
	}
	lua_pop(L, 1);

	lu_checkstack(L);
//	printf("END tick()\n");
}
コード例 #27
0
bool IsScriptTrue(const char* code, int size)
{
    if (size==0)
        return true;

    lua_State* L = CQuestManager::instance().GetLuaState();
    int x = lua_gettop(L);
    int errcode = lua_dobuffer(L, code, size, "IsScriptTrue");
    int bStart = lua_toboolean(L, -1);
    if (errcode)
    {
        char buf[100];
        snprintf(buf, sizeof(buf), "LUA ScriptRunError (code:%%d src:[%%%ds])", size);
        sys_err(buf, errcode, code);
    }
    lua_settop(L,x);
    return bStart != 0;
}
コード例 #28
0
ファイル: process.c プロジェクト: alexsvn/acctl
static void *report_apstatus(void *arg)
{
	int ret;
	struct apstatus_t *ap;

	int bufsize = sizeof(struct msg_ap_status_t) +
		sizeof(struct apstatus_t);
	char *buf = calloc(1, bufsize);
	if(buf == 0) {
		sys_err("Malloc for report apstatus failed:%s ", 
			strerror(errno));
		exit(-1);
	}

	int proto;
	/* tcp do not use chap to protect */
	fill_msg_header((void *)buf, MSG_AP_STATUS, NULL, 0);

	/* ap will first connect remote ac, but if 
	 * find local ac, ap will connect to local ac */
	while(1) {
		proto = (sysstat.sock >= 0) ? MSG_PROTO_TCP : MSG_PROTO_ETH;
		if(proto == MSG_PROTO_ETH) {
			ac_reconnect();
			goto wait;
		}

		ap = get_apstatus();
		memcpy(buf + sizeof(struct msg_ap_status_t),
			ap, sizeof(struct apstatus_t));

		ret = net_send(proto, sysstat.sock, 
			sysstat.dmac, buf, bufsize);
		if(ret <= 0 && proto == MSG_PROTO_TCP) {
			ac_lost();
			ac_reconnect();
		}
wait:
		sys_debug("report ap status (next %d seconds later)\n", 
			argument.reportitv);
		sleep(argument.reportitv);
	}
	return NULL;
}
コード例 #29
0
	int marriage_warp_to_my_marriage_map(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		marriage::TMarriage* pMarriage = marriage::CManager::instance().Get(ch->GetPlayerID());
		if (!pMarriage)
		{
			sys_err("pid[%d:%s] is not exist couple", ch->GetPlayerID(), ch->GetName());
			return 0;
		}

		
		//PREVENT_HACK
		if ( ch->IsHack() )
			return 0;
		//END_PREVENT_HACK
		
		pMarriage->WarpToWeddingMap(ch->GetPlayerID());
		return 0;
	}
コード例 #30
0
ファイル: sql.c プロジェクト: jgebbiken/shizuka3
int sql_init()
{
	sql_account = sql_create(sql_addr, sql_user, sql_password, sql_db_name);

	if (!sql_account)
	{
		sys_err("cannot create sql_account");
		return 0;
	}


	if (!sql_async_start(sql_account))
	{
		sql_deinit();
		return 0;
	}

	return 1;
}