Example #1
0
uint32_t SC_ApplyDamage::execute() {

    _procesUnit->getCreature()->getAttibute()[Attributes::Hp] -= _damage;
    cerr<<"damge "<<_damage<<" type "<<_dmgType<<endl;

    char message[sizeof(SerialTakeDmgHeal)];
    memset(message,0,sizeof(SerialTakeDmgHeal));
    SerialTakeDmgHeal* data = (SerialTakeDmgHeal*)(message);
    data->_type = SerialType::SerialTakeDmgHeal;
    data->_size = sizeof(SerialTakeDmgHeal);
    data->_time = _time;
    data->_value = 0 - _damage;
    data->_flags = 0;
    cerr<<"id "<<_procesUnit->getCreature()->getId()<<endl;
    cerr<<"maxhp "<<_procesUnit->getCreature()->getAttibute()[Attributes::HpMax]<<endl;
    data->_unitId = _procesUnit->getId();
    data->_casterId = _caster->getId();
    data->_powerid = _power->getId();
    data->_newvalue = max(0,_procesUnit->getCreature()->getAttibute()[Attributes::Hp]);
    cerr<<"new "<<data->_newvalue<<endl;
    for(list<Client*>::iterator it = _procesUnit->getSubscribers()[0].begin(); it != _procesUnit->getSubscribers()[0].end(); it++) {
        cerr<<"subsciber id "<<(*it)->getPlayerId()<<" unit "<<_procesUnit->getId() <<endl;
        if ((*it)->getPlayerId() == _procesUnit->getId()) {
            sendtoC(*it,message,sizeof(SerialTakeDmgHeal));
        }
    }
    data->_newvalue = 0;
    if(_procesUnit->getCreature()->getAttibute()[Attributes::HpMax]) {
        data->_newvalue = _procesUnit->getCreature()->getAttibute()[Attributes::Hp]*100 / _procesUnit->getCreature()->getAttibute()[Attributes::HpMax];
        data->_flags |= SerialTakeDmgHealBitF::ValueP;
    }

    for(list<Client*>::iterator it = _procesUnit->getSubscribers()[0].begin(); it != _procesUnit->getSubscribers()[0].end(); it++) {
        if ((*it)->getPlayerId() != _procesUnit->getPlayerId())
            sendtoC(*it,message,sizeof(SerialTakeDmgHeal));
    }

    return 0;
}
Example #2
0
void SPower::sendToClient(Client* cli){
	char message[sizeof(SerialPower)];
	memset(message,0,sizeof(SerialPower));
	SerialPower* data = (SerialPower*)(message);
	data->_type = SerialType::SerialPower;
	data->_size = sizeof(SerialPower);
	data->_unitId = this->_owner->getId();
	data->_powerId = this->_id;
	data->_iconId = this->_powertype->getIconId();
	data->_cd = this->_cd;
	
	sendtoC(cli,message,sizeof(SerialPower));
}
Example #3
0
uint32_t SPower::activate(uint32_t time, SObj* caster,SObj* target){
	
	char message[sizeof(SerialBeginCast)];
	memset(message,0,sizeof(SerialBeginCast));
	SerialBeginCast* data = (SerialBeginCast*)(message);
	data->_type = SerialType::SerialBeginCast;
	data->_size = sizeof(SerialBeginCast);
	data->_time = time;
	data->_unitId = this->_owner->getId();
	data->_powerid = this->getId();
	data->_castTime = this->_powertype->getStats()[PowerTypeStats::CastTime];
	
	for(list<Client*>::iterator it = this->_owner->getSubscribers()[0].begin(); it != this->_owner->getSubscribers()[0].end(); it++){
		sendtoC(*it,message,sizeof(SerialBeginCast));
	}
	
	SC_FirePower* cmd = new SC_FirePower(time+_powertype->getStats()[PowerTypeStats::CastTime],caster,target,this);
	caster->addCommand(cmd);
	//TODO send begin cast info to client
}
Example #4
0
int main(int argc, char *argv[])
{
    int i,maxfdp1;
    fd_set readfd;
    struct timeval timeout;
    timeout.tv_sec = 0;
    timeout.tv_usec = 50000;
    struct timeval Ntime,Ptime;

    srand((unsigned)time(NULL));
    initConnection();
    gettimeofday(&Ntime,NULL);
    Ptime = Ntime;
    toC_Buf = 0;
    toS_Buf = 0;
    Ci = 0;
    Si = 0;
    freopen("Bandwidth.txt","r",stdin);
    scanf("%d",&maxi);
    for(i = 0;i < maxi;i++)
    {
        scanf("%d",&BC[i]);
        BS[i] = BC[i];
    }
    freopen("CON","r",stdin);
    while(1)
    {
        int ret;
        // Get request from client - (1)filename
        Packet pack;
        FD_ZERO(&readfd);
        FD_SET(c_socket, &readfd);
        FD_SET(s_socket, &readfd);
        maxfdp1 = max(c_socket, s_socket) + 1;
        ret = select(maxfdp1, &readfd, NULL, NULL, &timeout);
        if(FD_ISSET(c_socket, &readfd))
        {
            ret = recvfrom(c_socket,&pack,sizeof(Packet),0,(struct sockaddr*)&client_addr,&cn);
            if (ret < 0)
            {
                printf("Receive Data from client failed.\n");
                break;
            }
            int newz = toS_Buf+pack.dataLength;
            if (newz<=BandtoS)
            {
                sendtoS((char *)&pack, sizeof(Packet));
                toS_Buf = newz;
            }
        }
        if(FD_ISSET(s_socket, &readfd))
        {
            ret = recvfrom(s_socket, &pack, sizeof(Packet), 0, (struct sockaddr*)&server_addr, &sn);
            //printf("DataID:%d\n",pack.dataID);
            if (ret < 0)
            {
                printf("Server Recieve Data Failed!\n");
                break;
            }
            int newz = toC_Buf+pack.dataLength;
            if (newz <= BandtoC)
            {
                sendtoC((char *)&pack, sizeof(Packet));
                toC_Buf = newz; 
            }
        }
        gettimeofday(&Ntime,NULL);
        if ((double)((Ntime.tv_sec-Ptime.tv_sec)*1000000.0+Ntime.tv_usec-Ptime.tv_usec)/1000000.0-1.0 > 0)
        {
            Ptime = Ntime;
            toC_Buf = 0;
            toS_Buf = 0;
            Ci = (Ci+1)%maxi;
            BandtoC = BC[Ci];
            Si = (Si+1)%maxi; 
            BandtoS = BS[Si];
            printf("%d\n",BandtoS);
        }
    }

   exit(0);
}